【c#窗体绘图1】理解绘图原理

c#窗体绘图


绘图原理

1.1 picturBox简要介绍

在理解绘图原理之前,我们首先要明白绘图使用的基本控件为picturebox,所以首先我们先来介绍一下这个常见的控件。
首先我们介绍一下该控件的重要属性,这些属性在我们绘图的过程中极为重要,如下表已经将重要属性列出。

属性介绍
NamepictureBox的对象名
BackcolorpictureBox的背景颜色
DockpictureBox的停靠方式,分为居中停靠,靠左停靠,靠右停靠,置顶停靠,置底停靠,随机停靠6种停靠方式
EnablepictureBox的激活状态,若为Ture则可以使用,若为False则为无法使用状态
SizemodepictureBox的大小模式,分为以下5种:1.正常显示模式 2.拉伸收缩模式 3.自动调节模式 4.居中放置模式 5.固定纵横比模式

接着我们介绍一下在pictureBox中坐标轴是怎么定义的。
在这里插入图片描述
如图所示,中间蓝色区域即为一个·pictureBox,系统默认的坐标原点在左上角,以向右为x轴的正方向,以向下为y轴的正方向,注意到x轴方向与控件的Width方向相对应,y轴方向与控件的Height方向相对应
提示:以下是本篇文章正文内容,下面案例可供参考

1.2 绘图本质

我们可以注意到其实pictureBox的显示内容如何是由它的image属性来决定的,在窗体中可以直接选择图像资源导入控件中,本质上是将jpg,png等格式的图片转化为了Bitmap形式的图像,然后将pictureBox的Image属性值赋值为该bitmap对象。

image=imread(图像地址);
bitmap=(Bitmap)image;
pictureBox.image=bitmap;

!!!上面的代码只是伪代码

那么现在的问题是Bitmap类型的对象怎么在程序中创建?实际上我们只需要给定Bitmap的长和宽就能创建一个Bitmap对象,这个长宽我们设置为pictureBox的长和宽。

Bitmap bp = new Bitmap(pictureBox2.Width,pictureBox2.Height);
pictureBox2.DrawToBitmap(bp, new Rectangle(0, 0, bp.Width, bp.Height));

但是我们是直接在pictureBox上绘图吗?其实并不是,本质上需要再pictureBox上创建一个画布Graphics对象进行绘制,并且画图的一切操作其实都是在画布上进行的,而最终的pictureBox的image属性本质上只是进行了一份拷贝工作,那么怎样才能得到画布并且在上面进行工作呢,请接着看我的第二篇文章!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个简单的绘图应用程序的示例代码: 首先,创建一个新的 C# 应用程序。在上添加一个 Panel 控件,用于绘制图形。 在的代码文件中,添加以下代码: ```csharp using System; using System.Drawing; using System.Windows.Forms; namespace DrawingApp { public partial class MainForm : Form { private bool isDrawing = false; private Point startPoint; private Point endPoint; private Graphics graphics; public MainForm() { InitializeComponent(); graphics = panel.CreateGraphics(); } private void panel_MouseDown(object sender, MouseEventArgs e) { isDrawing = true; startPoint = e.Location; } private void panel_MouseMove(object sender, MouseEventArgs e) { if (isDrawing) { endPoint = e.Location; graphics.DrawLine(Pens.Black, startPoint, endPoint); startPoint = endPoint; } } private void panel_MouseUp(object sender, MouseEventArgs e) { isDrawing = false; } private void clearButton_Click(object sender, EventArgs e) { graphics.Clear(Color.White); } } } ``` 这个示例应用程序通过鼠标事件在 Panel 控件上绘制直线。isDrawing 变量用于跟踪是否正在绘制。startPoint 和 endPoint 变量用于存储直线的起点和终点。graphics 对象用于在 Panel 控件上绘制。 在上添加一个清除按钮,单击该按钮时,清除 Panel 控件上的所有图形。将以下代码添加到清除按钮的 Click 事件处理程序中: ```csharp private void clearButton_Click(object sender, EventArgs e) { graphics.Clear(Color.White); } ``` 最后,在的代码文件中,将 panel 控件的 MouseDown、MouseMove 和 MouseUp 事件分别绑定到 panel_MouseDown、panel_MouseMove 和 panel_MouseUp 事件处理程序。 在设计器中,将 Panel 控件的 Dock 属性设置为 Fill,以便它占据整个。 现在,运行应用程序,你可以在 Panel 控件上绘制直线,单击清除按钮可以清除所有绘图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的神里绫华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值