我在画拓扑图,现画好了线(Canvas)然后在相应的的方动态创建timage对象,显示bmp图,可bmp图显示后,把原来的线擦掉了,在画一遍线还是那样,请问如何解决?谢谢!
解决方案 »
- 关于修改listview的网线颜色........100分噢!!马上结贴!!
- 执行一外部程序,并获得了外部程序上一checklistbox的句柄,如何将其某个选项设为enabled状态呢?谢谢,100分送上。
- 如何画类似photoshop中的蚂蚁线,急急急!
- 这样的PageControl上怎样动态的生成这样的TabSheet?
- 到哪里可以down一些常用的wav声音文件,比如给读出1,2,3等数字的wav文件
- 以前学过一段时间vb,现在想入门学delphi,
- 菜鸟求救!
- StringGrid中右键点击某一行,选中,弹出右键菜单,怎么写代码?
- 编写代码的 7 条基本原则
- 消息WM_GETTEXT 在用SendMessag........
- 有谁下过Copular Chat v3.0这源码编译成功的?
- 这个问题我搞不定了!!
BmpGroup=record
aRect:TRect;//Bmp的大小
Hint:string;//提示
Pos:TPoint;//显示的XY坐标
end;var
BmpArray:Array of BmpGroup;//定义一个动态数组保存相关数据
http://www.zlkj.com/bbs/dispbbs.asp?boardid=4&id=33
var
h : THintWindow;
begin
h := THintWindow.Create( Self );
with h do
begin
Color := clRed;
ActivateHint( r, 'hi there!' );
MessageBox( 0, 'Press any key to close the '
+ 'hint window', 'THintWindow', MB_OK );
ReleaseHandle;
Free;
end;还有,发现你的基础不行,特别是图像这方面,建议多看书
xzhifei(饭桶超人(抵制日货)) 非常感谢!!
再麻烦你一下,我想做出图上的效果,主机到远程的及器中还要画上路由bmp,到时点击即可用snmp查看其信息,所以想请问一下画图的实现方式,如何才能让线不被遮住,并且能一直存在,是不是不用创建timage
的确如你所说,我基础不行,我第一次用Delphi作程序,只看过几天书,因为项目赶的紧没办法,我以前用过几天bcb,一直找不到学习的资料,所以水平一般,很多东西只有自己取猜着试,所以..还请指点!!谢谢!!! ^Q^
http://zlkj.com/bbs/dispbbs.asp?boardid=4&id=35
我找到了原因,timage在动态创建时,Width 和 Height 值为默认值,比较大,所以...
用了个笨办法解决了 ,但觉得不是很好,请问,我是从Timage继承了个tpImage组件来画图,如何修改
动态创建tpImage时 它的默认Width Height值,我试着重新发布这两个属性,没成功,不知应怎样改?
tpImage[i]:=TtpImage.Create(Self);
tpImage[i].Width:=bmp.Width;
tpImage[i].Height:=bmp.Height;
这样不行,还是先有原来的值,因为还要画好多路由器的图,所以能解决了最好!
另外,xzhifei(饭桶超人(抵制日货)) 的方法是要在我画图的Panel里的OnMouseMove事件里循环检查吗,这样会不会变慢?
水平有限,各位大虾不要嫌烦!! ~~Q~~
看了你发的图,感觉可以用你原来的方式解决问题,保存线条的方法就是每改一步(添加或减少线条时)就要保存下来,以便于重绘时需要(OnPaint事件)
保存的方法就是先声明一个全局的TBitMap变量:
Bmp:TBitMap;
然后在窗口创建事件中创建此对象,画线时,先画在Bmp中,如:
Bmp.Canvas.Lineto(100,100);
画好后再画到目地画布上,如画到当前窗口上:
Canvas.Draw(0,0,Bmp);
就行了,在重绘时也要画:
procedure TForm1.FormPaint(Sender: TObject);
begin
Canvas.Draw(0,0,Bmp);
end;
这样就保证线条不会丢失!
我现在的问题是重画时,先画到bmp中在画到画布时什么都没有,另建一个工程测试也是什么都没有,我那里错了?
var
Form1: TForm1;
Bmp:TBitmap;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Bmp.Canvas.Pen.Color:=clRed;
Bmp.Canvas.Lineto(200,100);
Form1.Canvas.Draw(10,10,Bmp);
end;procedure TForm1.FormPaint(Sender: TObject);
begin
Form1.Canvas.Draw(0,0,Bmp);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Bmp:=TBitmap.Create;
end;