读书人

C#画箭头程序不知咋把图保存起来!解

发布时间: 2013-02-17 10:44:46 作者: rapoo

C#画箭头程序,不知咋把图保存起来!
代码是酱紫!
是直接画在窗体上的
实现了鼠标Move过程中线一直存在!
但是!Clear命令导致之前画的所有线都没了!
我的想法是。。。能不能再MouseDown的时候,把之前画的存起来,画完再加载??求教啊~我是菜鸟!想用最简单的方法实现先。。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace PAINTER
{
public partial class Form1 : Form
{
private Image MyImg;
int startX, startY;
Graphics g;
bool mouseDown = false;


public Form1()
{
InitializeComponent();

}

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{
this.MouseDown += new MouseEventHandler(Form1_MouseDown);
this.MouseUp += new MouseEventHandler(Form1_MouseUp);
this.MouseMove += new MouseEventHandler(Form1_MouseMove);
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
mouseDown = true;
startX = e.X;
startY = e.Y;

}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
mouseDown = false;
g = this.CreateGraphics();

Pen p = new Pen(Color.Cyan,3);
System.Drawing.Drawing2D.AdjustableArrowCap lineArrow =
new System.Drawing.Drawing2D.AdjustableArrowCap(4, 4, true);
p.CustomEndCap = lineArrow;


g.DrawLine(p, startX, startY, e.X, e.Y);
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (mouseDown)
{
g = this.CreateGraphics();
Form1_Paint(this, new PaintEventArgs(this.CreateGraphics(), this.ClientRectangle));
g.DrawLine(new Pen(Color.Cyan, 1), startX, startY, e.X, e.Y);
}

}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
g.Clear(Color.White);

}

}
}



[解决办法]
画在内存bitmap中,Paint事件绘制在窗体上。

g.Clear(Color.White);
这样窗体被覆盖引发Paint,当然就没有了。
[解决办法]
先在Bitmap中画好,然后再绘在窗体上

读书人网 >C#

热点推荐