Canvas对象

Canvas对象封装了能够在一个图像上面绘画和打字的属性和方法。这个对象由主AspJpeg对象的Canvas属性返回。

属性方法
Brush
Font
ParagraphHeight
Pen
Arc
Bar
Circle
ClearPath
DrawArc
DrawBar
DrawCircle
DrawEllipse
DrawImage
DrawImageChromaKey
DrawImageUV
DrawLine
DrawLineEx
DrawPie
DrawPNG
DrawPNGBinary
DrawPolyEx
DrawQuad
DrawRoundRect
Ellipse
FillEllipseEx
FillPolyEx
GetTextExtent
Line
LineTo
MoveTo
Print
PrintText
PrintTextEx

Canvas属性

Brush As IAspJpegBrush (read-only)

返回Brush对象,它可以设置笔刷的属性。

参见:第五章:绘画和打字

Font As IAspJpegFont (read-only)

返回了Font对象,它可以用来设置字体属性。

参见:第五章:绘画和打字

ParagraphHeight As Long (read-only)

返回刚通过调用PrintTextEx方法呈现的一个文本段落的高度(以像素计)。默认值是0。该属性在v1.9版中引入。

参见:第五章第3节:利用PrintTextEx的高级文本绘制

Pen As IAspJpegPen (read-only)

返回一个Pen对象,它可以用来设置铅笔属性。

参见:第五章:绘画和打字

Canvas方法

Sub Arc(X As Long, Y As Long, Radius As Long, StartAngle As Long, ArcAngle As Long)

DrawArc相同。已废弃,只为向后兼容而支持它。

Sub Bar(Left As Long, Top As Long, Right As Long, Bottom As Long )

DrawBar相同。已废弃,只为向后兼容而支持它。

Sub Circle(X As Long, Y As Long, Radius As Long)

DrawCircle相同。已废弃,只为向后兼容而支持它。

Sub ClearPath

清除当前路径。通过MoveTo方法和LineTo方法,可以产生一个新路径。利用DrawPolyEx方法和FillPolyEx方法可以呈现一个路径。

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法

Sub DrawArc(X As Long, Y As Long, Radius As Long, StartAngle As Long, ArcAngle As Long)

绘制一个圆形的弧,中心在(x,y)。Radius指定了该弧的半径。StartAngle指定了该弧的起始点角度(以degree计),而ArcAngle指定了该弧的跨度,以逆时向方向。使用当前的铅笔。弧形不作填色。

参见:第五章:绘画和打字

Sub DrawBar(Left As Long, Top As Long, Right As Long, Bottom As Long )

绘制一个矩形,用一个左上角坐标和一个右下角坐标指定矩形,使用当前的铅笔和笔刷。

参见:第五章:绘画和打字

Sub DrawCircle(X As Long, Y As Long, Radius As Long)

绘制一个圆形,用圆的中心坐标和半径指定圆形,使用当前的铅笔和笔刷。

参见:第五章:绘画和打字

Sub DrawEllipse(Left As Long, Top As Long, Right As Long, Bottom As Long )

绘制一个椭圆形,用它的边界矩形(以像素计)的坐标指定矩形,使用当前的铅笔和笔刷。

参见:第五章:绘画和打字

Sub DrawImage(X As Long, Y As Long, Picture As ASPJpeg, Optional Opacity = 1, Optional TranspColor, Optional TranspDeviation = 0)

Draws an image on top of the current image. X and Y are coordinates (in pixels) of the upper-left corner of Picture within the current image. Picture is another instance of the AspJpeg object.

As of Version 2.5, if a 4-point path is defined prior to calling this method (a call to MoveTofollowed by 3 calls to LineTo,) this method applies perspective projection to Picture, and all arguments except Picture and Opacity are ignored.

Opacity is a number between 0 and 1 which specifies the degree of opacity when Picture is blended onto the current image. Default value: 1 (opaque).

TranspColor specifies the color of pixels within Picture to be made transparent when blending the picture onto the current image. This must be an HTML-style hexadecimal number, e.g. &HFF0000 (red). By default, no pixels will be made transparent.

TranspDeviation is a number between 0 and 255 which specifies an allowable deviation of the RGB color values from TranspColor. Default value: 0. If TranspColor is not specified, this argument is ignored.

Starting with Version 1.9, this method requires that the color component count of the source and destination images match. E.g. an RGB image cannot be drawn on top of a CMYK one, or vice versa.

参见:第六章第1节:图像绘制第六章第4节 :透视投影

Sub DrawImageChromaKey(X As Long, Y As Long, Picture As ASPJpeg, R As Long, G As Long, B As Long,Dist1 As Long, Dist2 As Long )

在当前图像上绘制Picture,删除图像的单色的背景,单色的背景使它透明,以获得“色度键”效果。

XY是在当前图像内部Picture的左上角的坐标(以像素计)。

Picture是另一个AspJpeg对象的实例,代表了带有单色背景的图像,通常是蓝色或绿色。

RGB是背景的键颜色的RGB值(在[0,255]的范围内)。

Dist1Dist2是控制变透明的颜色范围的颜色距离。通过操练和错误来选择。值(20,80)通常制作出良好的结果。

该方法在v2.6版中引入。

参见:第八章第7节:色度键

Sub DrawImageUV(Image As ASPJpeg )

Image绘制映射到当前图像上3D表面。该3D表面方程以及各种其它的与3D表面映射处理有关的参数,通过Canvas.UV对象指定。

该方法在v2.8版中引入。

参见:第十一章:3D表面映射

Sub DrawLine(x1 As Long, y1 As Long, x2 As Long, y2 As Long )

绘制一条直线,由它的开始点和结束点的坐标指定(以像素计),使用当前的铅笔宽度和颜色。

参见:第五章:绘画和打字

Sub DrawLineEx(x1 As Long, y1 As Long, x2 As Long, y2 As Long )

绘制一条抗锯齿的直线,由它的开始点和结束点的坐标指定(以像素计),使用当前的铅笔宽度、颜色和不透明度。

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法

Sub DrawPie(X As Long, Y As Long, Radius As Long, StartAngle As Long, EndAngle As Long)

绘制了个饼形的楔子,中心在(X, Y)。半径用Radius指定(以像素计)。StartAngle指定了这个弧的开始点的角度(以角度数计),而EndAngle指定了弧结束点的角度,在逆时针方向上。使用当前的铅笔和笔刷。该方法在v2.0版中引入。

参见:第五章:绘画和打字

Sub DrawPNG(X As Long, Y As Long, Path As String )

Draws a PNG picture specified by Path on top of a larger image and takes into account the PNG picture's alpha channel for better blending with the background. X and Y specify the horizontal and vertical offsets of the picture being drawn relative to the larger image. 该方法在v1.7版中引入。

从v1.8版开始,DrawPNG方法还能够识别GIF格式,而且必须它来代替DrawImage方法,从而正确地呈现带有透明度的GIF图像。

Starting with Version 2.7.0.3, the method takes into account both the alpha channel of the background image and the alpha channel of the image being drawn for more accurate blending.

参见:第六章第3节:Alpha通道管理

Sub DrawPNGBinary(X As Long, Y As Long, Image As Variant )

DrawPNG方法相同,除了要绘制的Image被指定为一个字节的二进制数组,而不是一个文件路径。该方法在v1.7版中引入。

参见:第六章第3节:Alpha通道管理

Sub DrawPolyEx

Draws an anti-aliased polygon (broken line) through the points of the current path using the current pen's width, color and opacity. The path is built using the methods MoveTo and LineTo.

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法

Sub DrawQuad(X1 As Long, Y1 As Long, X2 As Long, Y2 As Long,X3 As Long, Y3 As Long,X4 As Long, Y4 As Long )

Draws a quadrilateral specified by the coordinates of its 4 corners using the current pen and brush. 该方法在v2.0版中引入。

参见:第五章:绘画和打字

Sub DrawRoundRect(Left As Long, Top As Long, Right As Long, Bottom As Long, CornerWidth As Long,CornerHeight As Long )

使用当前的铅笔和笔刷,绘制一个带圆角的矩形。The rectangle is specified by the coordinates of its upper-left and lower-right corners (in pixels). The corners are rounded by an ellipse with the width and height specified by CornerWidth andCornerHeight. 该方法在v2.0版中引入。

参见:第五章:绘画和打字

Sub Ellipse(Left As Long, Top As Long, Right As Long, Bottom As Long )

DrawEllipse相同。已废弃,只为向后兼容而支持它。

Sub FillEllipseEx(X As Long, Y As Long, Radius1 As Long, Radius2 As Long, StartAngle As Long, EndAngle As Long)

Fills an anti-aliased ellipse (or circle) or a sector thereof. X and Y specify the coordinates of the center. Radius1 and Radius2 specify the ellipse radii. If the two values are the same, a regular circle is drawn. StartAngle and EndAngle specify the angles (in degrees) of the start and end of the sector, if applicable. If the two values are 0, a full ellipse (circle) is drawn.

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法

Sub FillPolyEx

沿着当前的路径,用当前笔刷和颜色和不透明度填一个抗锯齿的多边形。通过MoveTo方法和LineTo方法建立路径。

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法

Function GetTextExtent(TextString As String, Optional Language = 1) As Long

Computes and returns the horizontal extent, in pixels, of the specified text string if rendered using the current font family, width and size. This method is useful for displaying centered text.

注意:PrintTextEx方法有内建的对文本对齐的支持。

参见:第六章第1节:图像绘制

Sub Line(x1 As Long, y1 As Long, x2 As Long, y2 As Long )

DrawLine相同。已废弃,只为向后兼容而支持它。

Sub LineTo(x As Long, y As Long)

向当前路径添加一个坐标在(xy)的新点。可以使用DrawPolyEx方法或FillPolyEx方法来呈现一条路径。自从v2.5版,一个路径还会影响DrawImage方法。

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法第六章第4节:透视投影

Sub MoveTo(x As Long, y As Long)

清除当前路径,创建一个新路径,并向新路径添加第一个点,坐标在(xy)。可以使用DrawPolyEx方法和FillPolyEx方法呈现一个路径。自从v2.5版,一个路径还会影响DrawImage方法。

该方法在v2.1版中引入。

参见:第五章第4节:抗锯齿的常规绘图方法第六章第4节:透视投影

Sub Print(X As Long, Y As Long, TextString As String, Optional Language = 1 )

用当前的字体,从(XY)开始,打印TextString

Language是一个可选的参数,当TextString是一种超出US ASCII的语言的文本时,必须使用它。有效的值是:

1(DEFAULT_CHARSET)
2(SYMBOL_CHARSET) 2
128(SHIFTJIS_CHARSET)
129(HANGEUL_CHARSET)
134(GB2312_CHARSET)
136(CHINESEBIG5_CHARSET)
255(OEM_CHARSET)
130(JOHAB_CHARSET)
177(HEBREW_CHARSET)
178(ARABIC_CHARSET)
161(GREEK_CHARSET)
162(TURKISH_CHARSET)
163(VIETNAMESE_CHARSET)
222(THAI_CHARSET)
238(EASTEUROPE_CHARSET)
204(RUSSIAN_CHARSET)
77(MAC_CHARSET)
186(BALTIC_CHARSET)

参见:第五章:绘画和打字

注意:AspJpeg v1.8以后的版本提供了一个更通用的PrintTextEx方法,在下面讲解。

Sub PrintText(X As Long, Y As Long, TextString As String, Optional Language = 1)

等同于Print。在AspJpeg 2.1.0.1中加入,以实现与VB的兼容,因为Print是VB中的一个保留词,会导致编译时错误。

Function PrintTextEx(Text As String, X As Long, Y As Long, FontPath As String) As Long

使用一种TrueType/OpenType或Type 1字体,打印抗锯齿文本,用字体文件的物理路径指定字体。支持分、旋转、文本对齐(向左对齐、向右对齐、中间对象以及两边分散对齐)以及可调用的行间距。该方法在v1.8版中引入,它是PrintText方法的更通用的替代物。

Text - specifies the text string to be printed (in Unicode format). May contain CR/LF characters for multi-line display.

XY - coordinates of the lower-left corner of the first character of the first line, relative to the upper-left corner of the image.

FontPath - 指定指向字体文件的物理路径。The font does not need to be properly registered on the system as long as the path to the font file is known.

Additional optional parameters are specified via the Font object. The following Font properties affect PrintTextEx:

Font.Color - 把当前的文本色指定为一个十六进制值。例如,&HFF0000FF是蓝色。

Font.Rotation - specifies the rotation angle around the (XY) point in degrees. A positive value creates a counter-clockwise rotation.

Font.Size - 指定以像素计的字体大小。

Font.Spacing - specifies an adjustment in pixels for the default line spacing when multi-line text is being rendered. A positive value increases the line spacing, a negative one decreases it.

Font.Width - specifies the width of an area in which the text string is to be inscribed. Word wrapping occurs if the text string does not fit in the area. This property must also be set if non-default text alignment is specified via Font.Align.

Font.Align - 指定文本对齐方式。有效值是:0(向左对齐)、1(向右对齐)、2(中间对齐)、3(两侧分散对齐)。对于一个非0值,还必须指定Font.Width

Font.Opacity - 指定文本的不透明度。有效值处于[0, 1]的范围,其中0意味着完全透明,1意味着完全不透明。

Font.Underline - (Version 2.1+) specifies if the text should be underlined if set to True. The color and width of the underline should be specified separately via Pen.Color and Pen.Width, respectively.

Returns the width (in pixels) of the text string being drawn. If the string is split into multiple lines, returns the width of the longest line. Starting with version 1.9, the height of the text paragraph just rendered can be obtained via the property ParagraphHeight

欲知更多信息,请参阅第五章第3节:利用PrintTextEx的高级文本绘制

如果你喜欢这篇文章,敬请给站长打赏↑

除特别注明外,本站所有文章均为本站站长原译,转载请注明出处。