社区
C++ Builder
帖子详情
小菜鸟请教一个画图问题!
hebuliyan
2003-03-21 10:37:12
各位高手,小弟新学BCB,要做一个类似于WORD里的那样的画点画线的东东,要求可删除可移动,是用函数好,还是用控件好?哪位能给我说一下graphics.h和canvas怎么用呀?还有BCB里有没有画线的控件呀?!!
谢了!!
...全文
16
6
打赏
收藏
小菜鸟请教一个画图问题!
各位高手,小弟新学BCB,要做一个类似于WORD里的那样的画点画线的东东,要求可删除可移动,是用函数好,还是用控件好?哪位能给我说一下graphics.h和canvas怎么用呀?还有BCB里有没有画线的控件呀?!! 谢了!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hebuliyan
2003-03-24
打赏
举报
回复
实在是太感谢各位了,
多谢多谢!!
waterain
2003-03-21
打赏
举报
回复
这是我写的一小段画图程序,看看对你有没有用
unit1.cpp
---------------------------------------------------------------------------
void __fastcall TForm1::Image3MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
//Image3->Canvas->MoveTo(m_Origin.x,m_Origin.y);
Image3->Canvas->Pen->Mode=pmCopy;
//Image3->Canvas->MoveTo(X,Y);
if(Shift.Contains(ssLeft))
{
switch(Drawing)
{
case dsLine:
Image3->Canvas->LineTo(move.x,move.y);
Image3->Canvas->LineTo(X,Y);
break;
case dsRectangle:
Image3->Canvas->Rectangle(m_Origin.x,m_Origin.y,move.x,move.y);
Image3->Canvas->Rectangle(m_Origin.x,m_Origin.y,X,Y);
break;
case dsArc:
break;
case dsEllipse:
Image3->Canvas->Ellipse(m_Origin.x,m_Origin.y,move.x,move.y);
Image3->Canvas->Ellipse(m_Origin.x,m_Origin.y,X,Y);
break;
case dsRoundRect:
Image3->Canvas->RoundRect(m_Origin.x,m_Origin.y,move.x,move.y,(m_Origin.x-move.x)/2,
(m_Origin.y-move.y)/2);
Image3->Canvas->RoundRect(m_Origin.x,m_Origin.y,X,Y,(m_Origin.x-X)/2,
(m_Origin.y-Y)/2);
break;
default:
break;
}
move=Point(X,Y);
}
}
void __fastcall TForm1::Image3MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image3->Canvas->MoveTo(X,Y);
m_Origin.x=X;
m_Origin.y=Y;
move.x=X;
move.y=Y;
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TRect ARect;
Clipboard()->Assign(Image3->Picture);
Image3->Canvas->CopyMode=cmWhiteness;
ARect=Rect(0,0,Image3->Width,Image3->Height);
Image3->Canvas->CopyRect(ARect,Image3->Canvas,ARect);
Image3->Canvas->CopyMode=cmSrcCopy;
}
unit1.h
class TForm1 : public TForm
{
private:
enum DrawingStyle {dsLine,dsArc,dsEllipse,dsRectangle,dsRoundRect};
DrawingStyle Drawing;
TPoint m_Origin;
TPoint move;
}
头文件只写了我加的几个变量
xuv2002
2003-03-21
打赏
举报
回复
楼上的各位讲的都对了
想可删除可移动的话,可以在画线时记录下来
可以自己组织一种格式存成文件或是用数据库存起来,线条好存,只要记录两点
然后在画线区的mousemove事件里面判断一下当前点是否在已保存的线条上
假如在上边就可以从记录删除该线条
移动就需要重画,然后重新记录了
大概就是使用Canvas->Pen->Mode= pmNotXor;
重画了
wu_07
2003-03-21
打赏
举报
回复
在窗口上画网格:
Graphics::TBitmap *newbmp = new Graphics::TBitmap();
newbmp->Width = 10;
newbmp->Height = 10;
newbmp->Canvas->Pen->Color=clSilver;
newbmp->Canvas->Rectangle(0,0,11,11);
Canvas->Brush->Bitmap = newbmp;
Canvas->FillRect(Rect(0,0,Width,Height));
wu_07
2003-03-21
打赏
举报
回复
在Paint事件中用Canvas对象画线
在TForm TImage等对象中都有Canvas属性
Canvas->MoveTo(x,y);
Canvas->LineTo(x1,y1)
favorit
2003-03-21
打赏
举报
回复
画线可以用Canvas的MoveTo和LineTo来画
AltiumDesigner
画图
不求人
微信公众号电子芯每天为大家推送学习教程、学习资料、设计案例,AltiumDesigner
画图
不求人,每天更新一课时,只需要不到3分钟的时间既可以完成学习,
每
一个
项目是从
菜鸟
到大虾的进化——
画图
板实现和优化的感悟
一个
项目是从
菜鸟
到大虾的进化 ——
画图
板实现和优化的感悟 开始学习使用计算机时,最早接触的就是window图画工具。用了很多年,却不曾想到它的来之不易。原来没用个应用软件是由很多很多的代码实现的啊! ...
知乎热榜:如何渡过小白期,不再当
菜鸟
程序员?
本来想写的题目是如何成为
一个
优秀的程序员,后来想想,我自己也未必能算得上。所以还是谦虚一点,就把题目改了。 我这次不写那些方法论或者是感受的东西,这些可能大家get不到,也未必喜欢。这次写一点实际的,...
画图
板开发第一阶段感悟
到今天为止,我的第
一个
java开发的小项目——
画图
板终于可以算是出来了。都记不清楚做了有多久了,只清晰的记得一开始以为挺简单的,哪个该怎样怎样做好像有那么个大体思路,但等真动起手来才发现有那么多
问题
根本...
如何渡过小白期,不再当
菜鸟
程序员?
菜鸟
和大牛的区别除了写代码、debug的核心能力差距之外,另外
一个
很大的差别就是在习惯上。大牛经过摸爬滚打练出了一系列优良的习惯,而
菜鸟
好习惯还没养成,坏习惯有了一堆。所以身为
菜鸟
的时候一定要有规范和习
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章