您的位置:首页 > 编程语言 > C#

c#图形编程入门

2009-09-29 10:57 316 查看
一。如何:创建钢笔



此示例创建一个Pen对象。

System.Drawing.PenmyPen;
myPen=newSystem.Drawing.Pen(System.Drawing.Color.Tomato);

可靠编程

当使用完需要消耗系统资源的对象(如Pen对象)后,应对其调用Dispose。

请参见

参考

Pen

概念

GDI+中的笔、直线和矩形

其他资源

图形编程入门二。如何:设置钢笔颜色 此示例更改预先存在的Pen对象的颜色。

myPen.Color=System.Drawing.Color.PeachPuff;


编译代码此示例要求:
名为myPen的[b]Pen对象。

可靠编程

应在使用完需要消耗系统资源的对象(例如Pen对象)后,对其调用Dispose。

请参见

任务

如何:创建钢笔

参考

Pen

概念

GDI+中的笔、直线和矩形

其他资源

图形编程入门 使用钢笔绘制线条和形状

[/b]


三。如何:创建实心画笔



此示例创建一个SolidBrush对象,Graphics对象可以用它来填充形状。

System.Drawing.SolidBrushmyBrush=newSystem.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.FillEllipse(myBrush,newRectangle(0,0,200,300));
myBrush.Dispose();
formGraphics.Dispose();


可靠编程

当使用完那些使用系统资源的对象(如Brush对象)后,应该对这些对象调用Dispose。

请参见

参考

SolidBrush
Brush

概念

GDI+中的画笔和实心形状

其他资源

图形编程入门
使用画笔填充形状




四。如何:在Windows窗体上绘制线条



此示例在窗体上绘制线条。



System.Drawing.PenmyPen=newSystem.Drawing.Pen(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.DrawLine(myPen,0,0,200,200);
myPen.Dispose();
formGraphics.Dispose();


编译代码

不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

应该始终对使用系统资源的任何对象(如Pen和Graphics对象)调用Dispose。

请参见

参考

DrawLine
OnPaint

其他资源

图形编程入门
使用钢笔绘制线条和形状
Windows窗体中的图形和绘制五。如何:绘制空心形状
此示例在窗体上绘制空心椭圆和空心矩形。

privatevoidDrawEllipse()
{
System.Drawing.PenmyPen=newSystem.Drawing.Pen(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.DrawEllipse(myPen,newRectangle(0,0,200,300));
myPen.Dispose();
formGraphics.Dispose();
}

privatevoidDrawRectangle()
{
System.Drawing.PenmyPen=newSystem.Drawing.Pen(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.DrawRectangle(myPen,newRectangle(0,0,200,300));
myPen.Dispose();
formGraphics.Dispose();
}


编译代码

不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

应该始终对使用系统资源的任何对象(如Pen和Graphics对象)调用Dispose。

请参见

参考

DrawEllipse
OnPaint
DrawRectangle

其他资源

图形编程入门
使用钢笔绘制线条和形状
Windows窗体中的图形和绘制


六。如何:在Windows窗体上绘制实心矩形
此示例在窗体上绘制实心矩形。

System.Drawing.SolidBrushmyBrush=newSystem.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.FillRectangle(myBrush,newRectangle(0,0,200,300));
myBrush.Dispose();
formGraphics.Dispose();


编译代码

不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

对任何消耗系统资源的对象(如Brush和Graphics对象)都应调用Dispose。

请参见

参考

FillRectangle
OnPaint

概念

GDI+中的画笔和实心形状

其他资源

图形编程入门
Windows窗体中的图形和绘制
使用钢笔绘制线条和形状


七。如何:在Windows窗体上绘制实心椭圆



此示例在窗体上绘制实心椭圆。



System.Drawing.SolidBrushmyBrush=newSystem.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.GraphicsformGraphics;
formGraphics=this.CreateGraphics();
formGraphics.FillEllipse(myBrush,newRectangle(0,0,200,300));
myBrush.Dispose();



编译代码

不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

对任何消耗系统资源的对象(如Brush和Graphics对象)都应调用Dispose。

请参见

其他资源

Windows窗体中的图形和绘制
图形编程入门
Alpha混合线条和填充
使用画笔填充形状

八。如何:在Windows窗体上绘制文本
下面的代码示例演示如何使用Graphics的DrawString方法在窗体上绘制文本。或者,可以使用TextRenderer在窗体上绘制文本。有关更多信息,请参见如何:用GDI绘制文本。

publicvoidDrawString()
{
System.Drawing.GraphicsformGraphics=this.CreateGraphics();
stringdrawString="SampleText";
System.Drawing.FontdrawFont=newSystem.Drawing.Font("Arial",16);
System.Drawing.SolidBrushdrawBrush=newSystem.Drawing.SolidBrush(System.Drawing.Color.Black);
floatx=150.0F;
floaty=50.0F;
System.Drawing.StringFormatdrawFormat=newSystem.Drawing.StringFormat();
formGraphics.DrawString(drawString,drawFont,drawBrush,x,y,drawFormat);
drawFont.Dispose();
drawBrush.Dispose();
formGraphics.Dispose();
}


编译代码

不能在Load事件处理程序中调用DrawString方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

以下情况可能会导致异常:
未安装Arial字体。

请参见

任务

如何:用GDI绘制文本

参考

DrawString
DrawText
FormatFlags
StringFormatFlags
TextFormatFlags
OnPaint

其他资源

图形编程入门九。如何:在Windows窗体上绘制垂直文本
下面的代码示例演示如何使用Graphics的DrawString方法在窗体上绘制竖排文字。
publicvoidDrawVerticalString()
{
System.Drawing.GraphicsformGraphics=this.CreateGraphics();
stringdrawString="SampleText";
System.Drawing.FontdrawFont=newSystem.Drawing.Font("Arial",16);
System.Drawing.SolidBrushdrawBrush=newSystem.Drawing.SolidBrush(System.Drawing.Color.Black);
floatx=150.0F;
floaty=50.0F;
System.Drawing.StringFormatdrawFormat=newSystem.Drawing.StringFormat();
drawFormat.FormatFlags=StringFormatFlags.DirectionVertical;
formGraphics.DrawString(drawString,drawFont,drawBrush,x,y,drawFormat);
drawFont.Dispose();
drawBrush.Dispose();
formGraphics.Dispose();
}



编译代码

不能在Load事件处理程序中调用此方法。如果已调整该窗体的大小或者其他窗体遮蔽了该窗体,则不会重绘所绘制的内容。若要自动重绘内容,应该重写OnPaint方法。

可靠编程

以下情况可能会导致异常:

未安装Arial字体。

请参见

参考

DrawString
FormatFlags
StringFormatFlags
OnPaint

其他资源

图形编程入门
使用字体和文本


十。如何:使用GDI+呈现图像



可以在应用程序中使用GDI+呈现以文件形式存在的图像。可通过以下方式做到这一点:创建一个Image类(如Bitmap)的新对象,创建一个Graphics对象来引用要使用的绘图图面,然后调用Graphics对象的DrawImage方法。将在图形类所表示的绘图表面上绘制图像。可以在设计时使用图像编辑器创建和编辑图像文件,而在运行时使用GDI+呈现图像。有关更多信息,请参见图像编辑器。




用GDI+呈现图像

创建一个对象,该对象表示要显示的图像。此对象必须是从Image继承的类的成员,如BitmapMetafile。下面显示了一个示例:


//UsestheSystem.Environment.GetFolderPathtogetthepathtothe
//currentuser'sMyPicturesfolder.
BitmapmyBitmap=newBitmap
(System.Environment.GetFolderPath
(System.Environment.SpecialFolder.MyPictures));





2.创建一个Graphics对象来表示要使用的绘图图面。有关更多信息,请参见如何:创建用于绘制的Graphics对象。


//CreatesaGraphicsobjectthatrepresentsthedrawingsurfaceof
//Button1.
Graphicsg=Button1.CreateGraphics();



3.调用图形对象的DrawImage以呈现图像。必须同时指定要绘制的图像以及将绘制它的位置的坐标。

g.DrawImage(myBitmap,1,1);



参见

任务

如何:创建用于绘制的Graphics对象
如何:在Windows窗体上绘制文本
绘制线条或闭合图形

参考

图像编辑器

概念

GDI+中的笔、直线和矩形

其他资源

图形编程入门
Windows窗体中的图形和绘制


十一。如何:创建特定形状的Windows窗体



此示例向窗体提供随该窗体一起调整大小的椭圆形状。



protectedoverridevoidOnPaint(System.Windows.Forms.PaintEventArgse)
{
System.Drawing.Drawing2D.GraphicsPathshape=newSystem.Drawing.Drawing2D.GraphicsPath();
shape.AddEllipse(0,0,this.Width,this.Height);
this.Region=newSystem.Drawing.Region(shape);
}





编译代码

此示例需要:

System.Windows.Forms和System.Drawing命名空间的引用。

该示例重写OnPaint方法以更改窗体的形状。若要使用此代码,请将方法声明以及绘图代码复制到该方法中。

请参见

参考

OnPaint
Region
System.Drawing
AddEllipse
Region

其他资源

图形编程入门




十二。如何:在Windows窗体中复制像素以减少闪烁


在使一个简单图形产生动画效果时,用户有时可能会遇到闪烁或其他不需要的视觉效果。限制出现此问题的一种方法是对该图形使用“bitblt”进程。Bitblt是颜色数据从像素原始矩形到像素目标矩形的“位块转换”。

在Windows窗体中,使用Graphics类的CopyFromScreen方法可以实现bitblt。您可以在该方法的参数中指定源和目标(根据点)、要复制的区域大小和用于绘制新形状的图形对象。

在下面的示例中,使用Paint事件处理程序在窗体上绘制了一个形状。然后,使用CopyFromScreen方法复制了该形状。


注意
将窗体的DoubleBuffered属性设置为true将使Paint事件中基于图形的代码被双缓冲。但在使用下面的代码时不会有任何明显的性能提升,这一点在使用更加复杂的图形操作代码时必须记住。

privatevoidForm1_Paint(System.Objectsender,
System.Windows.Forms.PaintEventArgse)
{
e.Graphics.FillEllipse(Brushes.DarkBlue,new
Rectangle(10,10,60,60));
e.Graphics.FillRectangle(Brushes.Khaki,new
Rectangle(20,30,60,10));
e.Graphics.CopyFromScreen(newPoint(10,10),newPoint(100,100),
newSize(70,70));
}



编译代码

上面的代码在窗体的Paint事件处理程序中运行,从而在重新绘制窗体时仍然会保持图形。同样地,不要在Load事件处理程序中调用图形相关的方法,因为如果窗体大小经过调整或被其他窗体遮盖后,已绘制的内容将不会重新绘制。

请参见

参考

Graphics.FillRectangleMethod
Control.OnPaintMethod
CopyPixelOperation

其他资源

Windows窗体中的图形和绘制
使用钢笔绘制线条和形状
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: