画线.docx

上传人:b****7 文档编号:11332609 上传时间:2023-02-27 格式:DOCX 页数:31 大小:113.87KB
下载 相关 举报
画线.docx_第1页
第1页 / 共31页
画线.docx_第2页
第2页 / 共31页
画线.docx_第3页
第3页 / 共31页
画线.docx_第4页
第4页 / 共31页
画线.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

画线.docx

《画线.docx》由会员分享,可在线阅读,更多相关《画线.docx(31页珍藏版)》请在冰豆网上搜索。

画线.docx

画线

描绘半透明的线、文字

补充:

不知道画像的表示方法的请先阅读「图片文件的表示」。

对文字列描绘方法不清楚的,请参照「文字的描绘」。

使用Color.FromArgb方法作成Color对象时,可以描写阿尔法的值。

通过阿尔法的值可以指定透明度。

阿尔法的值从0到255的整数,设定为0时效果为完全透明,255时不透明。

通过值可以对从Color对象取得作成的Pen、Brush对象,描绘半透明的图形、文字。

下面是半透明的矩形和文字描绘的例子。

[VB.NET]

'PictureBox1的Graphics对象取得

DimgAsGraphics=PictureBox1.CreateGraphics()

'在图片的背景表示

DimbmpAsNewBitmap("C:

\test.jpg")

g.DrawImage(bmp,0,0,bmp.Width,bmp.Height)

bmp.Dispose()

'作成半透明的Pen

DimpAsNewPen(Color.FromArgb(128,Color.Red),12)

g.DrawRectangle(p,NewRectangle(10,60,310,60))

p.Dispose()

'作成半透明的格式刷

Dimb=NewSolidBrush(Color.FromArgb(128,Color.Yellow))

DimfAsNewFont("Arial",30)

g.DrawString("BINGNING.NET",f,b,15,70)

b.Dispose()

f.Dispose()

g.Dispose()

品质级别的指定

描绘半透明图形和复数的图片重叠时,可以使用Graphics.CompositingQuality属性指定品质。

CompositingQuality属性的枚举成员和说明如下表所示。

成员名称

说明

AssumeLinear

假定线性值。

Default

默认质量。

GammaCorrected

使用灰度校正。

HighQuality

高质量、低速度复合。

HighSpeed

高速度、低质量。

Invalid

无效质量。

下面是变更CompositingQuality的值进行描绘的例子。

[VB.NET]

'PictureBox1的Graphics对象取得

DimgAsGraphics=PictureBox1.CreateGraphics()

'在背景表示图片

DimbmpAsNewBitmap("C:

\test.jpg")

g.DrawImage(bmp,0,0,bmp.Width,bmp.Height)

bmp.Dispose()

'半透明的Pen作成

DimpAsNewPen(Color.FromArgb(128,Color.Yellow),20)

'描绘普通的线

g.DrawLine(p,10,30,100,30)

'使用Gamma修正线进行描绘

g.CompositingQuality=_

System.Drawing.Drawing2D.CompositingQuality.GammaCorrected

g.DrawLine(p,10,60,100,60)

p.Dispose()

g.Dispose()

背景重新描绘

上面的例子都是半透明的图形和背景混合描绘的。

但时Graphics对象的CompositingMode方法设定为SourceCopy时,就不会和背景混合而重新描绘。

如果CompositingMode方法设定为SourceOver时,就会恢复为混合描绘。

例子的代码如下所示。

[VB.NET]

'PictureBox1的Graphics对象取得

DimgAsGraphics=PictureBox1.CreateGraphics()

'在背景表示图片

DimbmpAsNewBitmap("C:

\test.jpg")

g.DrawImage(bmp,0,0,bmp.Width,bmp.Height)

bmp.Dispose()

'半透明的Pen作成

DimpAsNewPen(Color.FromArgb(160,Color.Yellow),20)

'描绘普通的线

g.DrawLine(p,10,30,100,30)

'背景色重新描绘

g.CompositingMode=_

System.Drawing.Drawing2D.CompositingMode.SourceOver

g.DrawLine(p,10,60,100,60)

p.Dispose()

g.Dispose()

补充:

图片的表示方法不清楚的,请参照「图片文件的表示」。

Pen对象相关的说明请参照「线的描绘」。

长方形(矩形)的描绘

描绘长方形需要使用Graphics.DrawRectangle方法。

下面的例子是在位置(10,20),使用宽度为1的黑色线,在图片控件(PictureBox1)中描绘一个100x80的长方形。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'Pen对象的作成(宽度为1的黑色线)

'(不作成Pen对象,使用Pens.Black也可以)

DimpAsNewPen(Color.Black,1)

'(10,20,100,80)的长方形描绘

g.DrawRectangle(p,10,20,100,80)

'释放资源

p.Dispose()

g.Dispose()

多个长方形的描绘

描绘多个长方形时,可以使用DrawRectangles方法。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'Pen对象的作成(宽度为1的黑色线)

'(不作成Pen对象,使用Pens.Black也可以)

DimpAsNewPen(Color.Black,1)

'3个长方形的位置和大小放入数组中

DimrecstAsRectangle()=_

{NewRectangle(0,0,40,20),NewRectangle(10,5,20,50),_

NewRectangle(5,10,50,40)}

'长方形描绘

g.DrawRectangles(p,recst)

'资源释放

p.Dispose()

g.Dispose()

不规则多角形的描绘

如下图所示,描绘不规则多角形可以使用DrawPolygon方法。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'线的链接点存入数组

DimpsAsPoint()={NewPoint(0,0),NewPoint(150,50),_

NewPoint(80,100),NewPoint(100,150)}

'描绘

g.DrawPolygon(Pens.Black,ps)

'资源释放

g.Dispose()

椭圆的描绘

椭圆(圆)的描绘可以使用DrawEllipse方法。

在描绘时,椭圆的位置和大小,使用外面的四角形的位置和大小指定。

下面的例子是在位置(10,20)先描绘一个大小为100x80的四角形,然后在四角形中描绘椭圆形。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'在位置(10,20)处描绘一个大小为100x80的红色四角形

g.DrawRectangle(Pens.Red,10,20,100,80)

'在四角形中描绘一个黑色的椭圆形

g.DrawEllipse(Pens.Black,10,20,100,80)

'资源释放

g.Dispose()

描绘圆弧

圆弧的描绘可以使用DrawArc方法。

圆弧是作为椭圆形的一部分被描绘的。

使用和上面例子一样的方法描绘一个椭圆,然后指定截取的开始角度(X坐标的0度)和Sweep角度。

下面的例子是先描绘一个椭圆,然后指定开始角度0度,Sweep角度为90度的圆弧。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'在位置(10,20)处描绘一个100x80的红色四角形

g.DrawRectangle(Pens.Red,10,20,100,80)

'使用黑色线截取椭圆一部分描绘

'(开始角度为0度、Sweep角度为90度)圆弧

g.DrawArc(Pens.Black,10,20,100,80,0,90)

'资源释放

g.Dispose()

扇形的描绘

扇形的描绘可以使用DrawPie方法,使用方法和DrawArc方法完全一样。

下面的例子是使用上面所介绍的DrawArc方法的代码,只是把"DrawArc"变更为"DrawPie"。

[VB.NET]

'Graphics对象的作成成

DimgAsGraphics=PictureBox1.CreateGraphics()

'在位置(10,20)处描绘一个100x80的红色四角形

g.DrawRectangle(Pens.Red,10,20,100,80)

'使用黑色线截取椭圆一部分描绘

'(开始角度为0度、Sweep角度为90度)扇形

g.DrawPie(Pens.Black,10,20,100,80,0,90)

'资源释放

g.Dispose()

使用路线(Path)描绘图形

补充:

不知道画像的表示方法的请先阅读「图片文件的表示」。

关于Pen对象的说明请参照「线的描绘」。

线、图形的描绘方法在「线的描绘」「曲线的描绘」「长方形、多角形、椭圆、圆弧、扇形的描绘」「文字的描绘」中详细的说明。

除此之外还有使用路线(GraphicsPath对象)、Graphics.DrawPath方法的描绘方法。

路径是由各种线、图形所构成的。

在「线的描绘」「曲线的描绘」「长方形、多角形、椭圆、圆弧、扇形的描绘」「文字的描绘」中所介绍的都可以用于向路径追加。

实际向GraphicsPath对象追加图形,可以使用"Add?

?

?

"为名称的方法。

"Add?

?

?

"方法和Graphics类的"Draw?

?

?

"方法相对应,如果知道"Draw?

?

?

"的使用方法,那对于"Add?

?

?

"就很好理解。

Graphics方法

GraphicsPath方法

说明

DrawArc

AddArc

向当前图形追加一段椭圆弧。

DrawBezier

AddBezier

在当前图形中添加一段立方贝塞尔曲线。

DrawBeziers

AddBeziers

在当前图形中添加一系列相互连接的立方贝塞尔曲线。

DrawClosedCurve

AddClosedCurve

向此路径添加一个闭合曲线。

由于曲线经过数组中的每个点,因此使用基数样条曲线。

DrawCurve

AddCurve

向当前图形添加一段样条曲线。

由于曲线经过数组中的每个点,因此使用基数样条曲线。

DrawEllipse

AddEllipse

向当前路径添加一个椭圆。

DrawLine

AddLine

向此GraphicsPath追加一条线段。

DrawLines

AddLines

向此GraphicsPath末尾追加一系列相互连接的线段。

DrawPath

AddPath

将指定的GraphicsPath追加到该路径。

DrawPie

AddPie

向此路径添加一个扇形轮廓。

DrawPolygon

AddPolygon

向此路径添加多边形。

DrawRectangle

AddRectangle

向此路径添加一个矩形。

DrawRectangles

AddRectangles

向此路径添加一系列矩形。

DrawString

AddString

向此路径添加文本字符串。

下面的例子是向GraphicsPath对象追加图形,而路径是使用Graphics.DrawPath方法进行描绘。

[VB.NET]

'Graphics对象的作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'GraphicsPath对象的作成

DimmyPathAsNewGraphicsPath

'开始新的图形

myPath.StartFigure()

'追加2条直线

myPath.AddLine(0,0,50,50)

myPath.AddLine(100,0,150,50)

'关闭图形

myPath.CloseFigure()

'开始新的图形

myPath.StartFigure()

'追加2条直线

myPath.AddLine(0,60,50,110)

myPath.AddLine(100,60,150,110)

'开始新的图形

myPath.StartFigure()

'追加直线

myPath.AddLine(100,120,150,170)

'开始新的图形

myPath.StartFigure()

'追加直线

myPath.AddLine(0,120,50,170)

'追加2个四角形

myPath.AddRectangle(NewRectangle(160,10,60,80))

myPath.AddRectangle(NewRectangle(160,100,60,60))

'描绘路线图形

g.DrawPath(Pens.Black,myPath)

'释放资源

g.Dispose()

结果如下图所示。

描绘角圆滑的矩形

补充:

如果四角形的描绘方法不知道,请先参照「长方形、多角形、椭圆、圆弧、扇形的描绘」。

通过Pen类的LineJoin属性,可以描绘四角形的角、转折角部分的形状。

下面的例子是使用LineJoin属性,描绘各式四角形。

[VB.NET]

ProtectedOverridesSubOnPaint(ByValeAsPaintEventArgs)

MyBase.OnPaint(e)

'Pen的作成

DimblackPenAsNewPen(Color.Black,10)

'设定LineJoin属性为Bevel描绘四角形

blackPen.LineJoin=System.Drawing.Drawing2D.LineJoin.Bevel

e.Graphics.DrawRectangle(blackPen,NewRectangle(70,10,40,40))

'设定LineJoin属性为Miter描绘四角形

blackPen.LineJoin=System.Drawing.Drawing2D.LineJoin.Miter

e.Graphics.DrawRectangle(blackPen,NewRectangle(130,10,40,40))

'设定LineJoin属性为MiterClipped描绘四角形

blackPen.LineJoin=System.Drawing.Drawing2D.LineJoin.MiterClipped

e.Graphics.DrawRectangle(blackPen,NewRectangle(190,10,40,40))

'设定LineJoin属性为Round描绘四角形(角为圆弧)

blackPen.LineJoin=System.Drawing.Drawing2D.LineJoin.Round

e.Graphics.DrawRectangle(blackPen,NewRectangle(250,10,40,40))

EndSub

结果如下图所示。

变更Pen的配置

补充:

线的描绘方法请参照「这里」。

描绘宽度为1的线时,线会很清楚的被描绘不会出现什么问题。

但是描绘宽度比1大就需要注意了。

也就是说,指定坐标描绘宽度为2以上的线时,在相同的坐标处描绘宽度为1的线时,结果线会在中央被描绘。

还是看看下面的例子和结果吧。

[VB.NET]

'Graphics对象作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'Pen对象作成(宽度为2的黑色)

DimblackPenAsNewPen(Color.Black,2)

'描绘横线

g.DrawLine(blackPen,10,10,20,10)

'描绘宽度为1的黄色横线

g.DrawLine(Pens.Yellow,10,10,20,10)

'描绘竖线

g.DrawLine(blackPen,10,20,10,30)

'描绘宽度为1的黄色竖线

g.DrawLine(Pens.Yellow,10,20,10,30)

'描绘斜线

g.DrawLine(blackPen,10,40,20,50)

'描绘宽度为1的黄色斜线

g.DrawLine(Pens.Yellow,10,40,20,50)

'资源释放

blackPen.Dispose()

g.Dispose()

下图为结果所示(放大10倍)。

封闭图形描绘时的配置变更

封闭图开描绘时的配置,可以根据Pen对象的Alignment属性进行变更。

下面的例子是,Alignment属性变更为PenAlignment.Inset时描绘的结果。

[VB.NET]

'Graphics对象作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'Pen对象作成(宽度为5的黑色)

DimblackPenAsNewPen(Color.Black,5)

'描绘宽度为5的黑色矩形

g.DrawRectangle(blackPen,10,10,50,50)

'描绘宽度为1的黄色矩形

g.DrawRectangle(Pens.Yellow,10,10,50,50)

'Pen的配置变更为Inset

blackPen.Alignment=System.Drawing.Drawing2D.PenAlignment.Inset

'描绘宽度为5的黑色矩形

g.DrawRectangle(blackPen,70,10,50,50)

'描绘宽度为1的黄色矩形

g.DrawRectangle(Pens.Yellow,70,10,50,50)

'资源释放

blackPen.Dispose()

g.Dispose()

曲线的描绘

补充:

如果图片的表示方法不清楚,请参照「图片文件的表示」。

Pen对象的相关说明请参照「线的描绘」。

圆、椭圆、圆弧的描绘方法请参照这里。

描绘CardinalsPrine

首先使用Graphics.DrawCurve方法描绘CardinalsPrine。

经过指定的点描绘出圆滑的曲线。

?

圆滑度?

可以通过指定Tension实现,通常值为0~1之间。

默认值为0.5。

下面的例子是,使用DrawCurve方法的各种设定进行描绘。

[VB.NET]

'ImportsSystem.Drawing

'ImportsSystem.Drawing.Drawing2D

'上面2行代码写在所有代码的代码最上面

'Graphics对象作成

DimgAsGraphics=PictureBox1.CreateGraphics()

'曲线经过的点必须的4个点以上

Dimpoint1AsNewPoint(30,20)

Dimpoint2AsNewPoint(60,150)

Dimpoint3AsNewPoint(120,30)

Dimpoint4AsNewPoint(200,140)

Dimpoint5AsNewPoint(220,100)

Dimpoint6AsNewPoint(190,60)

DimcurvePointsAsPoint()=_

{point1,point2,point3,point4,point5,point6}

'Pen对象作成(宽度为3的蓝色)

DimbluePenAsNewPen(Color.Blue,3)

'描绘CardinalsPrine,Tension设定为0.5

g.DrawCurve(bluePen,curvePoints,0.5F)

'Pen对象作成(宽度为3的红色)

DimredPenAsNewPen(Color.Red,3)

'描绘CardinalsPrine

g.DrawCurve(redPen,curvePoints,1)

'Pen对象作成(宽度为3的绿色)

DimgreenPenAsNewPen(Color.Green,3)

'描绘CardinalsPrine,Tension设定为0(为直线)

g.DrawCurve(greenPen,curvePoints,0)

'Pen对象作成(宽度为1的黄色)

DimyellowPenAsNewPen(Color.Yellow,1)

'描绘CardinalsPrine

'从第1个点到第5个点经过

g.DrawCurve(yellowPen,curvePoints,1,3,0.5F)

'Pen对象作成(宽度为1的黑色)

DimblackPenAsNewPen(Color.Black,1)

'描绘CardinalsP

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 纺织轻工业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1