var
bmp1, bmp2 : TBitmap;
begin
bmp1 := TBitmap.Create;
bmp2 := TBitmap.Create;
bmp1.LoadFromFile(...);
bmp2 := bmp1;
...
end;var
bmp1, bmp2 : TBitmap;
begin
bmp1 := TBitmap.Create;
//bmp2 := TBitmap.Create;//注意,此行注释掉了
bmp1.LoadFromFile(...);
bmp2 := bmp1;
...
end;请问各位,以上两种写法有什么区别?当然,还有更麻烦的问题。请过来人指点迷津!
我喜欢上了一位网友。
我们都成家了并且有了孩子,本来都是在游戏而已,可是我却喜欢上她了。
她是那种虽然不算漂亮但一颦一笑都风情万种的成熟女人。
呵呵,我现在感觉那些青春靓丽的小妹妹比她差远了。
已经连续两晚上失眠了,想见到她。
可是,如果她知道我真的动了感情,肯定不敢再见我了。只好装作对她不冷不热的样子,让她认为我只是在游戏,不会给她带来麻烦。各位,我不会离婚,也不会要求她离婚,我只是想对她说我真的喜欢她!可是那样岂不是太给我们男同胞丢脸了?
千言万语闷在心里,难受啊!帮忙啊各位!
bmp1, bmp2 : TBitmap;
begin
bmp1 := TBitmap.Create;
bmp2 := TBitmap.Create;
bmp1.LoadFromFile(...);
bmp2 := bmp1;
...
end;var
bmp1, bmp2 : TBitmap;
begin
bmp1 := TBitmap.Create;
//bmp2 := TBitmap.Create;//注意,此行注释掉了
bmp1.LoadFromFile(...);
bmp2 := bmp1;
...
end;请问各位,以上两种写法有什么区别?当然,还有更麻烦的问题。请过来人指点迷津!
我喜欢上了一位网友。
我们都成家了并且有了孩子,本来都是在游戏而已,可是我却喜欢上她了。
她是那种虽然不算漂亮但一颦一笑都风情万种的成熟女人。
呵呵,我现在感觉那些青春靓丽的小妹妹比她差远了。
已经连续两晚上失眠了,想见到她。
可是,如果她知道我真的动了感情,肯定不敢再见我了。只好装作对她不冷不热的样子,让她认为我只是在游戏,不会给她带来麻烦。各位,我不会离婚,也不会要求她离婚,我只是想对她说我真的喜欢她!可是那样岂不是太给我们男同胞丢脸了?
千言万语闷在心里,难受啊!帮忙啊各位!
使用create后,系统会给bmp2分配一个地址,但同样的在赋值的那一句中,把指针又重新定位了至于感情问题,说出来好了,不会给我们男同胞丢脸
bmp2 := TBitmap.Create;在内存中创建了TBitMap对象然后又
bmp2 := bmp1;//bmp2指向了bmp1的对象。这样原来的对象就没法访问了。既丢失在内存中了
第二中方法就不是这样了。
创建Tbitmap后,bmp1指向它。bmp2:=bmp1然后bmp2也指向它
就是这样拉。
说的不对还挺包含
var
bmp1, bmp2 : TBitmap;
begin
bmp1 := TBitmap.Create;
bmp2 := TBitmap.Create;
bmp1.LoadFromFile(...);
//bmp2 := bmp1;
bmp2.Assign(bmp1);//第一种写法,最好这样用
...
end;
应该是运算符重载。
正如你说的,“在赋值的那一句中,把指针又重新定位了”Delphi并没有实现TBitmap的运算符重载,如果想把bmp1真正赋值给bmp2,应该用bmp2.assign(bmp1)才行。
可是,听说,assgin只是一种“浅度复制”,想听听高手的意见。同样,第二个问题也请给意见!
你好!下面这几句话不明白什么意思,指点一下好吗?以下摘自《efg's计算机实验室图象处理技术报告》
“TBitmap.Assign相对于“浅度复制”(只复制指针)来说是一个“深度复制”(复制所有的数据)。事实上,根据相关的统计,当某一个“标志”性的事件发生的时候,也就是说当位图复制了一份独立的拷贝的时候,Assign就是一个浅度复制了。这种细微的地方很少被察觉。”
原文:http://www.code-labs.com/article/articleinfo.php?id=366
当某一个“标志”性的事件发生的时候---------????????????
当位图复制了一份独立的拷贝的时候---------???????????
麻烦你详细解释一下好吗?