Jump to content
Software FX Community

PrePaint help


junkbond
 Share

Recommended Posts

I'm attempting to develop a "bullseye"-type scatter plot that has 3 colored "target" rings beneath the markers.  I had previously done something similar in the COM-based version of ChartFX using the PrePaint event and the Windows GDI API.  However, I'm having trouble accomplishing the same thing with ChartFX 2005 and the System.Drawing namespace.  I'm using this code below, which causes a crash after execution leaves the event.  Strangely, if I set the Handled property of the EventArgs to true, the crash does not occur.  Is there something I need to be doing to "release" the Graphics object so ChartFX can use it after I'm finished?  Thanks!

 

  Private Sub Chart1_PrePaint(ByVal sender As Object, ByVal e As ChartFX.WinForms.CustomPaintEventArgs) Handles Chart1.PrePaint   Dim xUpLeftOuter As Integer, yUpLeftOuter As Integer   Dim xBotRightOuter As Integer, yBotRightOuter As Integer   Dim xUpLeftMiddle As Integer, yUpLeftMiddle As Integer   Dim xBotRightMiddle As Integer, yBotRightMiddle As Integer   Dim xUpLeftInner As Integer, yUpLeftInner As Integer   Dim xBotRightInner As Integer, yBotRightInner As Integer   Dim USL As Double = Statistics1.Calculators(0).Usl   Const pGreen As Single = 0.25   Const pYellow As Single = 0.5   Const pRed As Single = 0.75   If (m_ChartType = OrionChartTypes.TruePosition) Then   xUpLeftInner = Chart1.AxisY.ValueToPixel(-(pGreen * USL))   yUpLeftInner = Chart1.AxisY.ValueToPixel((pGreen * USL))   xBotRightInner = Chart1.AxisY.ValueToPixel((pGreen * USL))   yBotRightInner = Chart1.AxisY.ValueToPixel(-(pGreen * USL))   xUpLeftMiddle = Chart1.AxisY.ValueToPixel(-(USL * pYellow))   yUpLeftMiddle = Chart1.AxisY.ValueToPixel((USL * pYellow))   xBotRightMiddle = Chart1.AxisY.ValueToPixel((USL * pYellow))   yBotRightMiddle = Chart1.AxisY.ValueToPixel(-(USL * pYellow))   xUpLeftOuter = Chart1.AxisY.ValueToPixel(-((USL * pRed)))   yUpLeftOuter = Chart1.AxisY.ValueToPixel(((USL * pRed)))   xBotRightOuter = Chart1.AxisY.ValueToPixel(((USL * pRed)))   yBotRightOuter = Chart1.AxisY.ValueToPixel(-((USL * pRed)))   Using g As Graphics = e.Graphics   Dim p As Pen = New Pen(Color.Black, 2)   g.DrawEllipse(p, xUpLeftOuter, yUpLeftOuter, _ xBotRightOuter - xUpLeftOuter, yBotRightOuter - yUpLeftOuter)   g.FillEllipse(Brushes.Firebrick, xUpLeftOuter, yUpLeftOuter, _ xBotRightOuter - xUpLeftOuter, yBotRightOuter - yUpLeftOuter)   g.DrawEllipse(p, xUpLeftMiddle, yUpLeftMiddle, _   xBotRightMiddle - xUpLeftMiddle, yBotRightMiddle - yUpLeftMiddle)   g.FillEllipse(Brushes.LightBlue, xUpLeftMiddle, yUpLeftMiddle, _   xBotRightMiddle - xUpLeftMiddle, yBotRightMiddle - yUpLeftMiddle)   g.DrawEllipse(p, xUpLeftInner, yUpLeftInner, _   xBotRightInner - xUpLeftInner, yBotRightInner - yUpLeftInner)   g.FillEllipse(Brushes.RoyalBlue, xUpLeftInner, yUpLeftInner, _   xBotRightInner - xUpLeftInner, yBotRightInner - yUpLeftInner)   End Using   End If   End Sub 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...