Dear Experts

How to display picturebox as oval shape.

Please help

Dani AI

Generated

The core idea in 's answer is the standard WinForms technique: make the PictureBox non‑rectangular by replacing its rectangular region with an oval-shaped clipping region. That gives an immediate oval control without changing the image itself. The short notes below fill gaps not covered in the thread and point out practical pitfalls.

Regions must be recreated whenever the control changes size. If the region is left allocated, GDI object counts grow and can cause leaks on long-running apps; dispose any previous Region before assigning a new one. Image layout matters: use a size mode that preserves the intended crop (Zoom to keep aspect ratio, Stretch to fill). For cleaner edges, render to an intermediate bitmap with anti-aliasing and set that as the PictureBox image, or use per-pixel alpha (PNG) if the goal is true translucency rather than a clipped hole. Windows Forms transparency is limited — if per-pixel alpha or complex layering is needed, WPF or a layered window is a better fit.

Mouse and hit behavior change when a control is clipped. Either rely on the control’s region-hit testing or test the click against the ellipse equation ((x-cx)^2/rx^2 + (y-cy)^2/ry^2 <= 1) to ignore clicks outside the visible oval. For many oval controls or complex shapes, owner-drawing a single control (draw the image with clipping) is often more efficient than many regioned child controls.

Checklist:

  • Recreate and dispose the region on Resize.
  • Pick PictureBox SizeMode to match desired crop.
  • Use anti-aliasing or alpha PNG for smooth edges.
  • Use region/geometry hit testing to ignore clicks outside the oval.
  • Consider WPF or custom painting for per-pixel alpha or large numbers of shaped images.

Recommended Answers

All 3 Replies

HAI

Hello Dear

HAI

what is this type of above answer?

Hi Try this

Imports System.Drawing.Drawing2D

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim gPath As GraphicsPath
        Dim rgn As Region

        PictureBox1.BackColor = Color.Blue
        'Create a graphics path
        gPath = New GraphicsPath()
        'Add elliptical 
        gPath.AddEllipse(PictureBox1.ClientRectangle)
        'Create a region
        rgn = New Region(gPath)
        'Change the picture region
        PictureBox1.Region = rgn
    End Sub
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.