首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

.net绘图操作4

2012-12-24 
.net绘图操作四绘制简单图形简单图形是组成复杂图形的基础,通过本小节的例子,读者可以掌握绘制复杂图形的

.net绘图操作四

绘制简单图形

简单图形是组成复杂图形的基础,通过本小节的例子,读者可以掌握绘制复杂图形的基础。

除了直线外,矩形是所有简单图形的基础。因为在Windows操作系统中,大部分图形在内存中的表示都是矩形块,比如一个窗体、一个按钮控件等。即使是圆形的界面元素,在表示其位置时,仍然以所在矩形的左上角坐标为参照点,通过宽和高来框定其位置及其区域。

那么如何绘制矩形?Graphics中的DrawRectangle可以在规定一个左上角顶点和长宽边长的情况下绘制一个矩形。下面的代码实现生成一个400*300的图片,并画出一个矩形。

 Pen pen = new Pen(Color.Red); // 创建一支红笔        Bitmap bmp = new Bitmap(400, 300);        Graphics g = Graphics.FromImage(bmp);        // 以[50,50]为左上角,以长200,宽200绘制矩形        g.DrawRectangle(pen, new Rectangle(50, 50, 200, 200));        pen.Dispose();        g.Dispose();        // 存为新图片        bmp.Save(Server.MapPath("~/aa.jpg"));        bmp.Dispose();

?

如何绘制圆形呢?Graphics中的DrawDllipse可以在一个矩形范围内绘制椭圆,当把矩形设置为正方形时,就能画成为正圆,代码如下所示:

 Pen pen = new Pen(Color.Yellow); // 创建一支黄笔        Bitmap bmp = new Bitmap(400, 400);        Graphics g = Graphics.FromImage(bmp);        // 以[50,50]为左上角,以长300,宽300的矩形内绘制圆        g.DrawEllipse(pen, new Rectangle(50, 50, 300, 300));        pen.Dispose();        g.Dispose();        // 存为新图片        bmp.Save(Server.MapPath("~/bb.jpg"));        bmp.Dispose();

?

?绘制文本

有时用户需要在图片上显示文字,Graphics中的DrawString可以在图形上绘制文字,其中可以指定坐标、字体、字号等信息。下面的代码简单地在图片上写了几个汉字。

Bitmap bmp = new Bitmap(300, 100);        Graphics g = Graphics.FromImage(bmp);        g.Clear(Color.White);        string str = "画在图片上的文字";        Font font = new Font("宋体", 15);        // 黑色笔刷        SolidBrush brush = new SolidBrush(Color.Red);        g.DrawString(str, font, brush, 30, 30); // 从[30,30]位置开始写字        font.Dispose();        brush.Dispose();        g.Dispose();        // 存为新图片        bmp.Save(Server.MapPath("~/text.jpg"));        bmp.Dispose();

?填充图形

前面的简单图形基本只有边界,内部区域是空心的。如果想绘制一个实心图形,可以使用Graphics中的FillXXX方法,并使用刷子(Brush对象)填充。

下面的代码示例实现用蓝色填充一个圆形区域。

  Bitmap bmp = new Bitmap(300, 300);        Graphics g = Graphics.FromImage(bmp);        // 蓝色笔刷        SolidBrush brush = new SolidBrush(Color.Blue);        g.FillEllipse(brush, new Rectangle(5, 5, 250, 250));        brush.Dispose();        g.Dispose();        // 存为新图片        bmp.Save(Server.MapPath("~/fill.jpg"));        bmp.Dispose();

?

热点排行