求帮 C# 模仿windows画板 最近老师要求用C#做一个小画板,画板上面的绘图怎么进行移动,我是只菜鸟,求帮谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 画板是在picturebox里面画的,现在没有一点思绪,就是想本来就要触发他的mouse_down 画好的图片怎么点到 Point pt = Point.Empty;bool IsMouseDown = false;private void pictureBox1_MouseDown(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Left) { pt = e.Location; IsMouseDown = true; }}private void pictureBox1_MouseUp(object sender, MouseEventArgs e){ if (e.Button == MouseButtons.Left) IsMouseDown = false;}private void pictureBox1_MouseMove(object sender, MouseEventArgs e){ if (IsMouseDown) { using (Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle)) { using (Pen pen = new Pen(Color.Red, 5)) { g.DrawLine(pen, pt, e.Location); pt = e.Location; } } }} http://topic.csdn.net/u/20100723/16/3712b3a6-4cad-460b-bd82-64c86eed9595.html if (this.pictureBox1.Image == null) return;// 从 pictureBox.Image 创建 Graphics 对象using (Graphics g = Graphics.FromImage(this.pictureBox1.Image)){ // 前面基本一样,最后加一局 g.Save();} 不好意思,没看仔细,加个移动控件的代码// 直接在 Form_Load 事件中调用// this.CSDNSamples_MoveControl();// 就可以看见效果了private void CSDNSamples_MoveControl(){ PictureBox box = new PictureBox(); box.BackColor = Color.DarkRed; box.SetBounds(0, 0, 100, 100); bool isMouseDown = false; Point pt = Point.Empty; box.MouseEnter += (sender, e) => { box.Cursor = Cursors.Hand; }; box.MouseLeave += (sender, e) => { box.Cursor = Cursors.Default; }; box.MouseDown += (sender, e) => { if (e.Button == MouseButtons.Left) { isMouseDown = true; pt = e.Location; } }; box.MouseUp += (sender, e) => { if (e.Button == MouseButtons.Left) { isMouseDown = false; } }; box.MouseMove += (obj, e) => { if (isMouseDown) { Point pos = box.Location; pos.Offset(e.Location); box.Location = Point.Subtract(pos, new Size(pt)); } }; this.Controls.Add(box); this.AutoScroll = true; box.BringToFront(); box.Show();} 哈哈哈 这个功能我已经找了很久了,但是还是不知道如何实现,后来做了一个只能移动某段线条的,移动整个图形的真的不知道怎么实现,下载了C#的这个DrawTools看了一下,差点没晕掉.... 关于智能标记 程序如何实时获取数据库中数据更新状态 关于一个winform图片容器的类 在cs类文件中,更新语句应该返回什么值 ?顶帖也送分啦 大哥们帮忙呀~~GridView问题 [急!!!]弹出的等待对话框如何实现? 文本框里,如何获得鼠标位置的单个文字? 用正则表达式判断注释 ===ArcGIS和mapinfo我要选用哪一个呢====== 求教,如果在winform的客户区中要显示多个不同的界面,一般用不同panel切换,还是多个winform切换展示? 关于bs的调试问题,在线等 无分请教电影格式转换问题,悲剧
Point pt = Point.Empty;
bool IsMouseDown = false;private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
pt = e.Location;
IsMouseDown = true;
}
}private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left) IsMouseDown = false;
}private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown)
{
using (Graphics g =
Graphics.FromHwnd(this.pictureBox1.Handle))
{
using (Pen pen = new Pen(Color.Red, 5))
{
g.DrawLine(pen, pt, e.Location);
pt = e.Location;
}
}
}
}
if (this.pictureBox1.Image == null) return;
// 从 pictureBox.Image 创建 Graphics 对象
using (Graphics g = Graphics.FromImage(this.pictureBox1.Image))
{
// 前面基本一样,最后加一局
g.Save();
}
// 直接在 Form_Load 事件中调用
// this.CSDNSamples_MoveControl();
// 就可以看见效果了
private void CSDNSamples_MoveControl()
{
PictureBox box = new PictureBox();
box.BackColor = Color.DarkRed;
box.SetBounds(0, 0, 100, 100); bool isMouseDown = false;
Point pt = Point.Empty; box.MouseEnter += (sender, e) => { box.Cursor = Cursors.Hand; };
box.MouseLeave += (sender, e) => { box.Cursor = Cursors.Default; }; box.MouseDown += (sender, e) =>
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
pt = e.Location;
}
}; box.MouseUp += (sender, e) =>
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = false;
}
}; box.MouseMove += (obj, e) =>
{
if (isMouseDown)
{
Point pos = box.Location;
pos.Offset(e.Location);
box.Location = Point.Subtract(pos, new Size(pt));
}
};
this.Controls.Add(box);
this.AutoScroll = true; box.BringToFront();
box.Show();
}