1 | ' Classes/System/Drawing/Pen.ab
|
---|
2 |
|
---|
3 | Namespace System
|
---|
4 | Namespace Drawing
|
---|
5 |
|
---|
6 | Namespace Drawing2D
|
---|
7 | Class CustomLineCap
|
---|
8 | Public
|
---|
9 | Function NativeCap() As *GpCustomLineCap
|
---|
10 | End Function
|
---|
11 | End Class
|
---|
12 | End Namespace
|
---|
13 |
|
---|
14 | Class Pen
|
---|
15 | Implements IDisposable, ICloneable
|
---|
16 | Public
|
---|
17 | Sub Pen(native As *GpPen)
|
---|
18 | nativePen = native
|
---|
19 | End Sub
|
---|
20 |
|
---|
21 | Sub Pen(color As Color, width = 1.0 As Single)
|
---|
22 | SetStatus(GdipCreatePen1(color, width, 0 /*GraphicsUnit.World As GpUnit*/, nativePen))
|
---|
23 | End Sub
|
---|
24 |
|
---|
25 | Sub Pen(brush As Brush, width = 1.0 As Single)
|
---|
26 | If ActiveBasic.IsNothing(brush) Then
|
---|
27 | Throw New ArgumentNullException("brush")
|
---|
28 | End If
|
---|
29 | SetStatus(GdipCreatePen2(brush.NativeBrush, width, 0 /*GraphicsUnit.World As GpUnit*/, nativePen))
|
---|
30 | End Sub
|
---|
31 |
|
---|
32 | Sub Dispose()
|
---|
33 | If nativePen <> 0 Then
|
---|
34 | GdipDeletePen(nativePen)
|
---|
35 | End If
|
---|
36 | nativePen = 0
|
---|
37 | End Sub
|
---|
38 |
|
---|
39 | Sub ~Pen()
|
---|
40 | Dispose()
|
---|
41 | End Sub
|
---|
42 |
|
---|
43 | Function Clone() As Pen
|
---|
44 | Dim cloned As *GpPen
|
---|
45 | SetStatus(GdipClonePen(nativePen, cloned))
|
---|
46 | Clone = New Pen(cloned)
|
---|
47 | End Function
|
---|
48 |
|
---|
49 | Function NativePen() As *GpPen
|
---|
50 | NativePen = nativePen
|
---|
51 | End Function
|
---|
52 |
|
---|
53 | '=========================================================================
|
---|
54 | ' Properties
|
---|
55 | '=========================================================================
|
---|
56 |
|
---|
57 | Sub Width(width As Single)
|
---|
58 | SetStatus(GdipSetPenWidth(nativePen, width))
|
---|
59 | End Sub
|
---|
60 |
|
---|
61 | Function Width() As Single
|
---|
62 | SetStatus(GdipGetPenWidth(nativePen, Width))
|
---|
63 | End Function
|
---|
64 |
|
---|
65 | Sub StartCap(cap As Drawing2D.LineCap)
|
---|
66 | SetStatus(GdipSetPenStartCap(nativePen, cap))
|
---|
67 | End Sub
|
---|
68 | /*
|
---|
69 | Function StartCap() As Drawing2D.LineCap
|
---|
70 | SetStatus(GdipGetPenStartCap(nativePen, StartCap))
|
---|
71 | End Function
|
---|
72 | */
|
---|
73 | Sub EndCap(cap As Drawing2D.LineCap)
|
---|
74 | SetStatus(GdipSetPenEndCap(nativePen, cap))
|
---|
75 | End Sub
|
---|
76 | /*
|
---|
77 | Function EndCap() As Drawing2D.LineCap
|
---|
78 | SetStatus(GdipGetPenEndCap(nativePen, EndCap))
|
---|
79 | End Function
|
---|
80 | */
|
---|
81 | Sub DashCap(cap As Drawing2D.DashCap)
|
---|
82 | SetStatus(GdipSetPenDashCap197819(nativePen, cap))
|
---|
83 | End Sub
|
---|
84 | /*
|
---|
85 | Function DashCap() As Drawing2D.DashCap
|
---|
86 | SetStatus(GdipGetPenDashCap197819(nativePen, DashCap))
|
---|
87 | End Function
|
---|
88 | */
|
---|
89 | Sub LineJoin(lineJoin As Drawing2D.LineJoin)
|
---|
90 | SetStatus(GdipSetPenLineJoin(nativePen, lineJoin))
|
---|
91 | End Sub
|
---|
92 | /*
|
---|
93 | Function LineJoin() As Drawing2D.LineJoin
|
---|
94 | SetStatus(GdipGetPenLineJoin(nativePen, LineJoin))
|
---|
95 | End Function
|
---|
96 | */
|
---|
97 | Sub CustomStartCap(cap As Drawing2D.CustomLineCap)
|
---|
98 | SetStatus(GdipSetPenCustomStartCap(nativePen, getNativeCustomCap(cap)))
|
---|
99 | End Sub
|
---|
100 | /*
|
---|
101 | Function CustomStartCap() As Drawing2D.CustomLineCap
|
---|
102 | Dim native As *GpCustomLineCap
|
---|
103 | SetStatus(GdipGetPenCustomStartCap(nativePen, native))
|
---|
104 | CustomStartCap = New Drawing2D.CustomStartCap(native)
|
---|
105 | End Function
|
---|
106 | */
|
---|
107 | Sub CustomEndCap(cap As Drawing2D.CustomLineCap)
|
---|
108 | SetStatus(GdipSetPenCustomEndCap(nativePen, getNativeCustomCap(cap)))
|
---|
109 | End Sub
|
---|
110 | /*
|
---|
111 | Function CustomEndCap() As Drawing2D.CustomLineCap
|
---|
112 | Dim nativeCustomCap As *GpCustomLineCap
|
---|
113 | SetStatus(GdipGetPenCustomEndCap(nativePen, nativeCustomCap))
|
---|
114 | CustomStartCap = New CustomStartCap(nativeCustomCap)
|
---|
115 | End Function
|
---|
116 | */
|
---|
117 | Sub MiterLimit(miterLimit As Single)
|
---|
118 | SetStatus(GdipSetPenMiterLimit(nativePen, miterLimit))
|
---|
119 | End Sub
|
---|
120 |
|
---|
121 | Function MiterLimit() As Single
|
---|
122 | SetStatus(GdipGetPenMiterLimit(nativePen, MiterLimit))
|
---|
123 | End Function
|
---|
124 |
|
---|
125 | Sub Alignment(alignment As Drawing2D.PenAlignment)
|
---|
126 | SetStatus(GdipSetPenMode(nativePen, alignment))
|
---|
127 | End Sub
|
---|
128 | /*
|
---|
129 | Function Alignment() As Drawing2D.PenAlignment
|
---|
130 | SetStatus(GdipGetPenMode(nativePen, Alignment))
|
---|
131 | End Function
|
---|
132 | */
|
---|
133 | Sub Transform(m As Drawing2D.Matrix)
|
---|
134 | SetStatus(GdipSetPenTransform(nativePen, m.NativeMatrix))
|
---|
135 | End Sub
|
---|
136 |
|
---|
137 | Function Transform() As Drawing2D.Matrix
|
---|
138 | Dim native As *GpMatrix
|
---|
139 | SetStatus(GdipGetPenTransform(nativePen, native))
|
---|
140 | Transform = New Matrix(native)
|
---|
141 | End Function
|
---|
142 | /*
|
---|
143 | Function PenType() As Drawing2D.PenType
|
---|
144 | SetStatus(GdipGetPenFillType(nativePen, PenType))
|
---|
145 | End Function
|
---|
146 | */
|
---|
147 | Sub Color(color As Color)
|
---|
148 | SetStatus(GdipSetPenColor(nativePen, color))
|
---|
149 | End Sub
|
---|
150 | /*
|
---|
151 | Function Color() As Color
|
---|
152 | If This.PenType <> Drawing2D.PenType.SolidColor Then
|
---|
153 | SetStatus(State.WrongState)
|
---|
154 | End If
|
---|
155 | SetStatus(GdipGetPenColor(nativePen, Color))
|
---|
156 | End Function
|
---|
157 | */
|
---|
158 | Sub Brush(brush As Brush)
|
---|
159 | SetStatus(GdipSetPenBrushFill(nativePen, getNativeBrush(brush)))
|
---|
160 | End Sub
|
---|
161 | /*
|
---|
162 | Function Brush() As Brush
|
---|
163 | Imports Drawing2D
|
---|
164 | Dim penType = PenType
|
---|
165 | Dim native As *GpBrush
|
---|
166 | Select Case penType
|
---|
167 | Case PenType.SolidColor
|
---|
168 | SetStatus(GdipGetPenBrushFill(nativePen, native))
|
---|
169 | Brush = New SolidBrush(native)
|
---|
170 | Case PenType.HatchFill
|
---|
171 | SetStatus(GdipGetPenBrushFill(nativePen, native))
|
---|
172 | Brush = New HatchBrush(native)
|
---|
173 | Case PenType.TextureFill
|
---|
174 | SetStatus(GdipGetPenBrushFill(nativePen, native))
|
---|
175 | Brush = New TextureBrush(native)
|
---|
176 | Case PenType.Gradient
|
---|
177 | SetStatus(GdipGetPenBrushFill(nativePen, native))
|
---|
178 | Brush = New Brush(native)
|
---|
179 | Case PenType.LinearGradient
|
---|
180 | SetStatus(GdipGetPenBrushFill(nativePen, native))
|
---|
181 | Brush = New LinearGradientBrush(native)
|
---|
182 | Case Else
|
---|
183 | Brush = Nothing
|
---|
184 | End Select
|
---|
185 | End Function
|
---|
186 | */
|
---|
187 | Sub DashStyle(dashStyle As Drawing2D.DashStyle)
|
---|
188 | SetStatus(GdipSetPenDashStyle(nativePen, dashStyle))
|
---|
189 | End Sub
|
---|
190 | /*
|
---|
191 | Function DashStyle() As Drawing2D.DashStyle
|
---|
192 | SetStatus(GdipGetPenDashStyle(nativePen, DashStyle))
|
---|
193 | End Function
|
---|
194 | */
|
---|
195 | Sub DashOffset(dashOffset As Single)
|
---|
196 | SetStatus(GdipSetPenDashOffset(nativePen, dashOffset))
|
---|
197 | End Sub
|
---|
198 |
|
---|
199 | Function DashOffset() As Single
|
---|
200 | SetStatus(GdipGetPenDashOffset(nativePen, DashOffset))
|
---|
201 | End Function
|
---|
202 |
|
---|
203 | 'DashPattern
|
---|
204 | 'CompoundArray
|
---|
205 |
|
---|
206 | '=========================================================================
|
---|
207 | ' Functions
|
---|
208 | '=========================================================================
|
---|
209 |
|
---|
210 | Sub SetLineCap(startCap As Drawing2D.LineCap, endCap As Drawing2D.LineCap, dashCap As Drawing2D.DashCap)
|
---|
211 | SetStatus(GdipSetPenLineCap197819(nativePen, startCap, endCap, dashCap))
|
---|
212 | End Sub
|
---|
213 |
|
---|
214 | Sub ResetTransform()
|
---|
215 | SetStatus(GdipResetPenTransform(nativePen))
|
---|
216 | End Sub
|
---|
217 |
|
---|
218 | Sub MultiplyTransform(m As Drawing2D.Matrix)
|
---|
219 | Imports System.Drawing.Drawing2D
|
---|
220 | MultiplyTransform(m, MatrixOrder.Prepend)
|
---|
221 | End Sub
|
---|
222 |
|
---|
223 | Sub MultiplyTransform(m As Drawing2D.Matrix, order As Drawing2D.MatrixOrder)
|
---|
224 | SetStatus(GdipMultiplyPenTransform(nativePen, m.nativeMatrix, order))
|
---|
225 | End Sub
|
---|
226 |
|
---|
227 | Sub TranslateTransform(dx As Single, dy As Single)
|
---|
228 | Imports System.Drawing.Drawing2D
|
---|
229 | TranslateTransform(dx, dy, MatrixOrder.Prepend)
|
---|
230 | End Sub
|
---|
231 |
|
---|
232 | Sub TranslateTransform(dx As Single, dy As Single, order As Drawing2D.MatrixOrder)
|
---|
233 | SetStatus(GdipTranslatePenTransform(nativePen, dx, dy, order))
|
---|
234 | End Sub
|
---|
235 |
|
---|
236 | Sub ScaleTransform(sx As Single, sy As Single)
|
---|
237 | Imports System.Drawing.Drawing2D
|
---|
238 | ScaleTransform(sx, sy, MatrixOrder.Prepend)
|
---|
239 | End Sub
|
---|
240 |
|
---|
241 | Sub ScaleTransform(sx As Single, sy As Single, order As Drawing2D.MatrixOrder)
|
---|
242 | SetStatus(GdipScalePenTransform(nativePen, sx, sy, order))
|
---|
243 | End Sub
|
---|
244 |
|
---|
245 | Sub RotateTransform(angle As Single)
|
---|
246 | Imports System.Drawing.Drawing2D
|
---|
247 | RotateTransform(angle, MatrixOrder.Prepend)
|
---|
248 | End Sub
|
---|
249 |
|
---|
250 | Sub RotateTransform(angle As Single, order As Drawing2D.MatrixOrder)
|
---|
251 | SetStatus(GdipRotatePenTransform(nativePen, angle, order))
|
---|
252 | End Sub
|
---|
253 |
|
---|
254 | Private
|
---|
255 |
|
---|
256 | nativePen As *GpPen
|
---|
257 |
|
---|
258 | Static Function getNativeCustomCap(cap As Drawing2D.CustomLineCap) As *GpCustomLineCap
|
---|
259 | If ActiveBasic.IsNothing(cap) Then
|
---|
260 | getNativeCustomCap = 0
|
---|
261 | Else
|
---|
262 | getNativeCustomCap = cap.NativeCap
|
---|
263 | End If
|
---|
264 | End Function
|
---|
265 |
|
---|
266 | Static Function getNativeBrush(br As Brush) As *GpBrush
|
---|
267 | If ActiveBasic.IsNothing(br) Then
|
---|
268 | getNativeBrush = 0
|
---|
269 | Else
|
---|
270 | getNativeBrush = br.NativeBrush
|
---|
271 | End If
|
---|
272 | End Function
|
---|
273 |
|
---|
274 | End Class
|
---|
275 |
|
---|
276 | End Namespace
|
---|
277 | End Namespace
|
---|