一个老问题:treeview背景贴图

mmkill 2005-05-11 04:32:23
实现FlashGet一样的背景贴图,不能有花屏或者闪烁感。
论坛里搜不到一个可以解决实际问题的帖子,还是要麻烦高手指教了,有完整代码最好,谢谢
...全文
253 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmkill 2005-05-20
  • 打赏
  • 举报
回复
多谢,结帖!!!
文字背景透明怎么实现?能告知更好
newc_k 2005-05-20
  • 打赏
  • 举报
回复
引用Types
你不要下移的话,反正你要是发现做什么操作会引起花屏或位置问题的,就用这句 treeview1.Invalidate;,要是认为麻烦,就自己重封装TreeView
procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
begin
treeview1.Invalidate;
end;

procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode;
var AllowCollapse: Boolean);
begin
treeview1.Invalidate;
end;
mmkill 2005-05-20
  • 打赏
  • 举报
回复
还有,展开时图片位置下移
mmkill 2005-05-20
  • 打赏
  • 举报
回复
编译不能通过啊哥们,Types干吗的?
newc_k 2005-05-18
  • 打赏
  • 举报
回复
嚣张的楼主为什么不结帖
newc_k 2005-05-17
  • 打赏
  • 举报
回复
忘了说了,TREEVIEW的容器reaize事件中
procedure TForm1.Panel2Resize(Sender: TObject);
begin
treeview1.Invalidate;
end;
newc_k 2005-05-17
  • 打赏
  • 举报
回复
不知道这个能不能满足楼主,还有,讲话不要那么嚣张

procedure TForm1.TreeView1CustomDraw(Sender: TCustomTreeView;
const ARect: TRect; var DefaultDraw: Boolean);
var
btop, bLeft: Integer;
rect: Trect;
x, y, h: integer;
begin

x := GetScrollPos(sender.Handle, SB_HORZ);
y := GetScrollPos(sender.Handle, SB_VERT);
h := 17;


rect := sender.ClientRect;
rect.Bottom := rect.Top + sender.Height;
btop := rect.Bottom - Image1.Picture.Bitmap.Height - y * h;
bleft := rect.Right - Image1.Picture.Bitmap.Width - x;
sender.Canvas.FillRect(Arect);

rect := Types.rect(bleft - 1, btop - 1, bleft + Image1.Picture.Bitmap.Width + 1, bTop + Image1.Picture.Bitmap.Height + 1);
if IntersectRect(rect, rect, arect) then
BitBlt(sender.Canvas.Handle, Arect.Left, Arect.Top, Arect.Right - Arect.Left ,
Arect.Bottom - Arect.top , Image1.Picture.Bitmap.Canvas.Handle, Arect.Left - bleft, Arect.Top - btop, SRCCOPY);

DefaultDraw := true;
end;
constantine 2005-05-17
  • 打赏
  • 举报
回复
不会,顶
mmkill 2005-05-17
  • 打赏
  • 举报
回复
看来CSDN真的是垃圾厂了,在论坛里搜遍了帖子,都是有人提问没人回答,或者回答的不着边际。
jingyueid 2005-05-14
  • 打赏
  • 举报
回复
解决花屏,闪烁的关键是:图形的刷新需要一致,同步。

基本上的做法是这样的:
创建虚拟设备描述表,创建内存位图,在设备描述表上进行绘制图形,将操作结果拷贝到要绘制的地方。
如果你没有办法直接操作设备描述表,那么就创建位图,然后在位图上进行操作,将位图设置为背景。
sdqhlyf 2005-05-13
  • 打赏
  • 举报
回复
gz
smzh8 2005-05-11
  • 打赏
  • 举报
回复
想要源码发信问询:adminc@citiz.net
mmkill 2005-05-11
  • 打赏
  • 举报
回复
有知道的吗

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧