Solved

GDI DrawEllipse on Bitmap - Ellipse cut off

Posted on 2006-11-03
4
532 Views
Last Modified: 2006-11-30
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
Comment
Question by:PLavelle
  • 2
4 Comments
 
LVL 10

Accepted Solution

by:
Kinger247 earned 500 total points
ID: 17870294
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
 
LVL 7

Expert Comment

by:Mohamed Zedan
ID: 17872872
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
 
LVL 10

Expert Comment

by:Kinger247
ID: 17921947
Hi, did this work for you ?
0
 

Author Comment

by:PLavelle
ID: 18045013
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction As chip makers focus on adding processor cores over increasing clock speed, developers need to utilize the features of modern CPUs.  One of the ways we can do this is by implementing parallel algorithms in our software.   One recent…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
Internet Business Fax to Email Made Easy - With  eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, f…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now