科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC.NET的GDI+编程入门教程之图形

VC.NET的GDI+编程入门教程之图形

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

长方形是由四条边组成的具有四个直角的几何图形,为了绘制一个长方形,可以定义围成长方形的矩形值,或定义它的位置和尺寸。

作者:刘涛编译 来源:天极网 2007年11月16日

关键字: VC.NET GDI+ 编程 图形

  • 评论
  • 分享微博
  • 分享邮件
基于直线的图形

  一、等边图形

  (一)长方形和正方形

  长方形是由四条边组成的具有四个直角的几何图形,为了绘制一个长方形,可以定义围成长方形的矩形值,或定义它的位置和尺寸。为了画一个矩形围成的长方形,可以使用Graphics::DrawRectangle()方法。

public: void DrawRectangle(Pen *pen, Rectangle rect);

  类似的长方形可以按照如下说明:


图一、长方形说明图示

  定义过一个矩形变量后,可以将它传递给上述的方法,例子代码如下:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Pen *penCurrent = new Pen(Color::Red);
Rectangle Rect(20, 20, 248, 162);
e->Graphics->DrawRectangle(penCurrent, Rect);
}

  需要注意的是,也可以在方法的括号内定义画笔或矩形对象。

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
e->Graphics->DrawRectangle(new Pen(Color::Red), Rectangle(20, 20, 248, 162));
}

  这将产生如下效果图:


图二、绘制的长方形效果图

  一定要记住,矩形对象的第三个参数代表的是矩形的宽度,第四个参数代表的矩形的高度,这对于那些使用过GDI编程的人来说是容易混淆的一点。GDI+定义的矩形对象与GDI定义的矩形对象是有区别的。实际上,为了定义所要画的长方形的位置和尺寸,Graphics类提供了如下版本的DrawRectangle()方法:

public: void DrawRectangle(Pen *pen, int x, int y, int width, int height);
public: void DrawRectangle(Pen *pen, float x, float y, float width, float height);

  这次,长方形对象用一个定位点和它的宽度、高度来表示。这可以用如下的Windows坐标系统进行说明。


图三、Windows坐标系统

  在此基础上,上述的长方形可以按照如下方法进行绘制:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
 e->Graphics->DrawRectangle(new Pen(Color::Red), 20, 20, 248, 162);
}

  正方形是四个边都相等的长方形,是长方形的特例。

  (二)一系列的长方形

  DrawRectangle()方法用于绘制一个长方形,如果打算绘制很多的矩形的话,你可以向前一步地,用Graphics::DrawRectangles()方法,它有两个版本,语法如下:

public: void DrawRectangles(Pen *pen, Rectangle rects[]);
public: void DrawRectangles(Pen *pen, RectangleF rects[]);

  这个方法需要一个Rectangle 或 RectangleF数组。它根据数组的不同的成员值绘制不同的长方形。下面是一个例子代码:

private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
 Pen *penCurrent = new Pen(Color::Red);
 Rectangle Rect[] = { Rectangle(20, 20, 120, 20),
   Rectangle(20, 50, 120, 30),
   Rectangle(20, 90, 120, 40),
   Rectangle(20, 140, 120, 60) };
 e->Graphics->DrawRectangles(penCurrent, Rect);
}

  上述代码产生如下的效果:


图四、一系列长方形效果图
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章