Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 556
  • Last Modified:

GDI DrawEllipse on Bitmap - Ellipse cut off

The sides of the ellipse are getting cut off when I draw it to this image. Any ideas?

        Dim oGraphics As Graphics = Nothing
        Dim oFillBrush As SolidBrush = Nothing
        Dim oBorderPen As Pen = Nothing
       imgShape.Left = 0
       imgShape.Top = 0
       imgShape.Width = Me.Width
       imgShape.Height = Me.Height
       imgShape.Image = New Bitmap(imgShape.Width, imgShape.Height)
       oGraphics = Graphics.FromImage(imgShape.Image)
       oGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
       oFillBrush = New SolidBrush(Me.BackColor)
       oBorderPen = New Pen(Me.LineColor, Me.LineWidth)
       Dim iOffset As Int32 = 0
       Dim oImageRect As New Rectangle(imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.Width - iOffset * 2, imgShape.ClientRectangle.Height - iOffset * 2)
       oGraphics.FillEllipse(oFillBrush, oImageRect)
       oGraphics.DrawEllipse(oBorderPen, oImageRect)
       'Dispose of everything
0
PLavelle
Asked:
PLavelle
  • 2
1 Solution
 
Kinger247Commented:
You can only offset the height and width values.


    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim oGraphics As Graphics = Nothing
        Dim oFillBrush As SolidBrush = Nothing
        Dim oBorderPen As Pen = Nothing

        imgShape.Left = 0
        imgShape.Top = 0
        imgShape.Width = Me.Width - 8
        imgShape.Height = Me.Height - 27

        imgShape.Image = New Bitmap(imgShape.Width, imgShape.Height)

        oGraphics = Graphics.FromImage(imgShape.Image)
        oGraphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        oFillBrush = New SolidBrush(Me.BackColor)
        oBorderPen = New Pen(Color.Magenta, 2)

        Dim oImageRect As New Rectangle(0, 0, imgShape.Width - 1, imgShape.Height - 1)

        oGraphics.FillEllipse(oFillBrush, oImageRect)
        oGraphics.DrawEllipse(oBorderPen, oImageRect)
        'Dispose of everything
    End Sub

    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        Invalidate()
    End Sub
0
 
Mohamed ZedanCommented:
in this line

   Dim oImageRect As New Rectangle(imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.Width - iOffset * 2, imgShape.ClientRectangle.Height - iOffset * 2)

maybe because you used imgshape.ClientRectangle.X in the top Parameter ?
                                                                                                                                                    |
                                                                                                                                            Here V
   Dim oImageRect As New Rectangle(imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.X + iOffset, imgShape.ClientRectangle.Width - iOffset * 2, imgShape.ClientRectangle.Height - iOffset * 2)

but anyways the clientRectangle property always returns a rectangle with x,y = 0,0
so  to make your code right use it this way

   Dim oImageRect As New Rectangle(iOffset, iOffset, imgShape.ClientRectangle.Width - (iOffset * 2), imgShape.ClientRectangle.Height - (iOffset * 2))
0
 
Kinger247Commented:
Hi, did this work for you ?
0
 
PLavelleAuthor Commented:
Here's what worked:

Dim rcControl As New Rectangle(iLineWidth / 2, iLineWidth / 2, Me.Width - iLineWidth, Me.Height - iLineWidth)

Thanks for the help.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now