Rank: Advanced Member
Groups: Guest
Joined: 3/3/2008(UTC) Posts: 185
Thanks: 8 times
|
Hi, In the previous post http://forums.aurigma.co...w-Frame-for-VObject.aspxwe were asking about adding frame onto ImageVObject. Actually we plan to go with the 3rd method - Create custom imagevobject that will draw the Rectangle... But, after several try, we couldn't get it done... Just wondering can we have a sample for it? Thanks.
|
|
|
|
Rank: Advanced Member
Groups: Guest
Joined: 3/9/2008(UTC) Posts: 554
Was thanked: 1 time(s) in 1 post(s)
|
Ching Yen, Unfortunately ImageVObject does not support borders. But you can inherit your oun class, which supports borders. This is code sample of ImageWithBorder, which allow to draw picture with a border: Code:
Imports Aurigma.GraphicsMill.WinControls
Public Class ImageWithBorder
Inherits ImageVObject
Dim _bgFrame As RectangleVObject
Public Sub New(ByVal bitmap As Aurigma.GraphicsMill.Bitmap, ByVal scaleToActualSize As Boolean, ByVal x As Single, ByVal y As Single)
MyBase.New(bitmap, scaleToActualSize, x, y)
_bgFrame = New RectangleVObject(0, 0, 1, 1)
_bgFrame.Pen = New System.Drawing.Pen(Color.BurlyWood, 10)
_bgFrame.Pen.Alignment = Drawing2D.PenAlignment.Inset
_bgFrame.Brush = Nothing
End Sub
Public Overrides Sub Draw(ByVal renderingRect As System.Drawing.Rectangle, ByVal g As System.Drawing.Graphics, ByVal coordinateMapper As ICoordinateMapper)
Dim rectBounds As System.Drawing.RectangleF = _bgFrame.GetVObjectBounds()
Dim objBounds As System.Drawing.RectangleF = Me.GetVObjectBounds()
If Not rectBounds.Equals(objBounds) Then
Dim interim As System.Drawing.Pen = _bgFrame.Pen
_bgFrame = New RectangleVObject(objBounds)
_bgFrame.Transform = Me.Transform
_bgFrame.Pen = interim
_bgFrame.Brush = Nothing
End If
MyBase.Draw(renderingRect, g, coordinateMapper)
_bgFrame.Transform = Me.Transform
_bgFrame.Draw(renderingRect, g, coordinateMapper)
End Sub
Public Property BackgroundPen() As System.Drawing.Pen
Get
Return _bgFrame.Pen
End Get
Set(ByVal Value As System.Drawing.Pen)
_bgFrame.Pen = Value
End Set
End Property
End Class
Now you can change borger of image. This sample demonstrates how to use ImageWithBorder class: Code:
Dim bt As New Aurigma.GraphicsMill.Bitmap("image.jpg")
Dim newImage As New ImageWithFrame(bt, False, 0, 0)
Me._multiLayerViewer.CurrentLayer.VObjects.Add(newImage)
Edited by user Thursday, June 26, 2008 9:11:04 PM(UTC)
| Reason: Not specified |
|
|
|
|
Rank: Advanced Member
Groups: Guest
Joined: 3/3/2008(UTC) Posts: 185
Thanks: 8 times
|
Hi, Thanks for the great code !! But, here comes the problem and perhaps you could give some hints on how to solve it... Please check on the attachment ChingYen attached the following image(s):
|
|
|
|
Rank: Advanced Member
Groups: Guest
Joined: 3/9/2008(UTC) Posts: 554
Was thanked: 1 time(s) in 1 post(s)
|
Hi, To solve this problem you should override two methods GetVObjectBounds() and GetTransformedVObjectBounds() in ImageWithBorder class. For example: Code:
Public Sub UpdateFrame()
Dim rectBounds As System.Drawing.RectangleF = _bgFrame.GetVObjectBounds()
Dim objBounds As System.Drawing.RectangleF = MyBase.GetVObjectBounds()
If Not rectBounds.Equals(objBounds) Then
Dim interim As System.Drawing.Pen = _bgFrame.Pen
_bgFrame = New RectangleVObject(objBounds)
_bgFrame.Transform = Me.Transform
_bgFrame.Pen = interim
_bgFrame.Brush = Nothing
End If
End Sub
Public Overrides Sub Draw(ByVal renderingRect As System.Drawing.Rectangle, ByVal g As System.Drawing.Graphics, ByVal coordinateMapper As ICoordinateMapper)
MyBase.Draw(renderingRect, g, coordinateMapper)
UpdateFrame()
_bgFrame.Transform = Me.Transform
_bgFrame.Draw(renderingRect, g, coordinateMapper)
End Sub
Public Overrides Function GetVObjectBounds() As System.Drawing.RectangleF
UpdateFrame()
Return System.Drawing.RectangleF.Union(MyBase.GetVObjectBounds(), _bgFrame.GetVObjectBounds)
End Function
Public Overrides Function GetTransformedVObjectBounds() As System.Drawing.RectangleF
UpdateFrame()
Return System.Drawing.RectangleF.Union(MyBase.GetTransformedVObjectBounds(), _bgFrame.GetVObjectBounds)
End Function
|
|
|
|
|
Forum Jump
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.