【发布时间】:2016-11-17 12:47:54
【问题描述】:
我编写了一个程序,允许用户在表单中用笔绘画。 但有一个问题。
我只能在表单中设置 2 种颜色,例如我将左侧按钮设置为黑色,右侧按钮设置为红色。
我需要的只是如何将此代码更改为用户可以选择自己的颜色的代码。
我尝试了不同的方法,比如颜色对话,但我做不到。
我的代码:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Graphics graphic = this.CreateGraphics();
graphic.DrawLine(Pens.Black, e.X, e.Y, e.X + 1, e.Y + 1);
}
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
Graphics graphic = this.CreateGraphics();
graphic.DrawLine(Pens.Red, e.X, e.Y, e.X + 1, e.Y + 1);
}
}
【问题讨论】:
-
CreateGraphics是做什么的?如果您没有绘制到屏幕外缓冲区,那么当窗口的客户区无效时,用户的图稿将丢失。 -
@Dai 我知道我只是想将此代码更改为用户可以选择自己颜色的代码。当我开始项目时,这段代码正是我想要的。只是笔的颜色...
-
Winforms 图形基本规则#1:永远不要使用
control.CreateGraphics!永远不要尝试缓存Graphics对象!要么使用Graphics g = Graphics.FromImage(bmp)绘制到Bitmap bmp中,要么使用e.Graphics参数在控件的Paint事件中绘制。系统有时需要绘制所有控件的表面,而您有时无法控制;因此,您要添加到这些表面的所有内容都必须从系统将调用的一个事件创建,即Paint事件。 -
它只是似乎起作用。 Askan 已经回答了您的问题,但它似乎仍然有效。用 ColorDialog 设置这两种颜色,试一试,享受,最小化,最大化然后扔掉它!
-
@TaW 我相信我的答案中有解决图形问题的方法