作者amen1387 (MyBad)
看板C_Sharp
标题[问题] 小画家功能
时间Fri Jul 12 12:57:30 2019
※ 引述《fantoccini (失控的颜色)》之铭言:
: 这几天为了写视窗开始学C#
: 再练习的时候遇到一个问题
: 例如我要画一个矩形
: 当Mouse按下後 然後移动 然後放开
: 最後的结果是一个矩形 但是
: 我的滑鼠在移动的过程中 无法看出
: 这个矩形跟随着你的滑鼠移动
: 简单的说 就是小画家 圈选矩形的那个功能
: 感觉上是要一直重绘 不知道是不是这样
我把drawline写在mouse_up的话,就跟原本楼主的问题一样,但试着写在mouse_move他就
会一直出现
我现在有想到的方式是在mousedown的时候把picture box撷取起来
Bitmap lastimage=new Bitmap(picturebox1.width,picturebox1.height);
Garphcs Imagegrapics=Graphics.FromImage(lastimage);
然後在mousemove时
Graphics p =pictureBox1.CreateGraphics();
if(e.Button==MouseButton.Left)
{
p=image graphics;
p.DrawLine(pen1,downX,downY,e.X,e.Y);
}
可是这样写连画出来都没有,不知道哪里出了问题
。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.214.146.126 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1562907452.A.582.html
1F:→ kobe8112: 练习画东西不用这麽麻烦,不需要任何bitmap 07/12 20:04
2F:→ kobe8112: mousemove事件内直接依序呼叫两个g的函式即可: 07/12 20:05
3F:→ kobe8112: 1. g.Clear,清除先前绘制,颜色可用picturebox的背景色 07/12 20:06
4F:→ kobe8112: 2. g.DrawLine,跟你原本呼叫的一样 07/12 20:07
5F:→ kobe8112: Graphics都用pictureBox1取得的这个物件即可 07/12 20:08
6F:→ amen1387: K大 谢谢!不过这样写是不是每画一次就不见,我要的功 07/12 22:31
7F:→ amen1387: 能是在画圆或画方块或画线,可以先预览将画出的图案, 07/12 22:31
8F:→ amen1387: 并留下图案继续画画 07/12 22:31
9F:推 johnpage: 记录每次画的,每次移动後都重画 07/13 07:25
10F:→ amen1387: 我就是想这样 但是他好像撷取不了picture box的image 07/13 22:23
11F:→ kobe8112: 我比较建议写程式之前先想好大致的架构跟做法 07/14 10:26
12F:→ kobe8112: 我举例的程式会让之前画的消失,是因为我的例子跟你的 07/14 10:27
13F:→ kobe8112: 目的不完全相同,如果要改成你的目的,稍微调整一下就好 07/14 10:27
14F:→ kobe8112: j大的想法就是一种例子,搭配Graphics的储存函式即可 07/14 10:29
15F:→ amen1387: 了解 谢谢两位! 07/14 12:48