社区
非技术区
帖子详情
如何解决Image图形闪烁
holoboy
2002-03-07 10:28:27
我用二个Image,一个作为背景图,一个作为画布,画布的属性设为透明,
当我动态重绘画布内容时,二个Image严重闪烁,以至于无法看清Image
上的图形。
不要告诉我 DoubleBuffer := True;
也不要告诉我只用一个Image
更不要告诉我用第三方控件
请各位专家赐教,在下不胜感激,分数好说!!!!!
...全文
610
26
打赏
收藏
如何解决Image图形闪烁
我用二个Image,一个作为背景图,一个作为画布,画布的属性设为透明, 当我动态重绘画布内容时,二个Image严重闪烁,以至于无法看清Image 上的图形。 不要告诉我 DoubleBuffer := True; 也不要告诉我只用一个Image 更不要告诉我用第三方控件 请各位专家赐教,在下不胜感激,分数好说!!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
数字蛋糕
2002-04-30
打赏
举报
回复
在处理不需要直接显示的图形时,应该尽量避免使用TImage空间,
正如楼上所说,使用内存中的TBitmap控件是一个比较有效的方法.
至于是否使用PaintBox我倒是觉得无关痛痒.
此外如果看不到刷新后的图像的话,调用一下父窗口的Refresh或者Invalidate就可以了.其实速度还是很快的.
shinesi
2002-04-30
打赏
举报
回复
我有一个方法,也许不闪烁
back: TBitmap; ///背景层
tran: TBitmap; ///过渡层
ibmp: TBitmap; ///其它图元
procedure TForm1.MouseMove(...)
begin
/////先拷贝背景图
tran.Canvas.CopyRect(Rect(0,0,back.Width,back.Height),
tran.Canvas,Rect0,0,back.Width,back.Height));
////拷贝你的图元,可以设置透明
tran.Canvas.Transprent := true;
tran.Canvas.TransprentColor := Tran.Canvas.Pixls[1,1];
tran.Canvas.CopyRect(rect(..),ibmp,
Rect(0,0,ibmp.Width,ibmp.Height));
end;
/////Timer的Interval设有40ms,要保证每秒最少有25帧
procedure TForm1.Timer1Timer(Sender: TObject);
begin
PaintBox1.canvas.Draw(lx,ly,tran);
end;
saxash
2002-03-30
打赏
举报
回复
几点意见:
1、 holoboy ()、hxshanji(洪兴山鸡)、shadowno(龙门无影)、都是你吧,你到底有几个名字?
2、上面就是全部源代码吗?好坏姑且不说,这样的程序会产生内存泄露啊!
3、你的思路不对。用 Draw 重画,用 Repaint 擦除?不闪烁才有鬼啦!
4、前面说的,你到底有没有在看啊!
hxshanji
2002-03-30
打赏
举报
回复
holoboy ()、hxshanji(洪兴山鸡)、shadowno(龙门无影)、都是你吧????
不是。我就是我。
shadowno
2002-03-27
打赏
举报
回复
怎么设置??????????
Tpaintbox 没有这个属性呀!!
smhpnuaa
2002-03-26
打赏
举报
回复
双缓冲设为True!
outer2000
2002-03-25
打赏
举报
回复
ok
shadowno
2002-03-25
打赏
举报
回复
请帮忙up
shadowno
2002-03-25
打赏
举报
回复
我的全部原代码如下:为什么还是会闪烁!!!!
var
Form1: TForm1;
ly,lx:integer;
mygraphy:Tbitmap;
implementation
{$R *.DFM}
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
PaintBox1.canvas.Draw(lx,ly,mygraphy);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
lx:=lx+1;
ly:=ly+1;
paintbox1.Repaint ;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mygraphy:=Tbitmap.Create;
mygraphy.LoadFromFile('C:\WINDOWS\Desktop\ww.bmp');
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
timer1.Enabled :=not timer1.Enabled;
end;
shadowno
2002-03-17
打赏
举报
回复
思考中。。。
tuboo
2002-03-17
打赏
举报
回复
学习。。。。。。。。。。。
lfstudy
2002-03-17
打赏
举报
回复
你用Delphi 6吗,我用Delphi 5做类似的程序不会出现这样的问题,但在Delphi 6下就会严重闪烁。
peachblossom
2002-03-17
打赏
举报
回复
up
saxash
2002-03-17
打赏
举报
回复
哈哈,这两天我刚好在搞类似的咚咚,交流一下……
需要动态重画屏幕而不闪烁,是要用 PaintBox,不然直接显示在 Form 上也行,呵呵…… 为什么呢?因为 Image 没有 OnPaint 这个事件,如果用 Draw 或是 RePaint 方法,都会产生闪烁,即使用 PaintBox 也一样!
要消除闪烁,当然要用 BitBlt 这个API函数,而对 Image 用这个函数有什么问题呢?BitBlt 过去的位图不显示!只有在 RePaint/Refresh 以后才会显示,而这时闪烁就发生了。用 PaintBox 就一切 OK 了。
“用paintbox如果移动窗体到屏幕外再回来,图会被擦掉!”——没错!因为这时,Image 也好,PaintBox 也好,都被 RePaint 了。所以,就要用到 OnPaint 这个事件了。
总之,Image 控件是用来显示位图的,而 PainBox 是用来画图的,掌握了它们的特性,才能得心应手。
hxshanji
2002-03-16
打赏
举报
回复
to:Kingron(对CSDN愤怒中……)
用paintbox如果移动窗体到屏幕外再回来,图会被擦掉!
qiubolecn
2002-03-16
打赏
举报
回复
一,不要用autosize, 二,不要用stretch什么的
将image设整成比真实的图像小一点点,也就是有一点点不显示,over
hxshanji
2002-03-16
打赏
举报
回复
to:Kingron(对CSDN愤怒中……)
刷新快还是有
Kingron
2002-03-15
打赏
举报
回复
哎,把Image改成TPaintBox,就什么问题都没有了。
thirdapple
2002-03-15
打赏
举报
回复
Image1.Canvas.CopyRect很快?
应该是BitBlt吧!只有用双缓冲技术了,DFW上应该有
hxshanji
2002-03-15
打赏
举报
回复
改用DelphiX控件?是什么?那里有?
加载更多回复(6)
ASP.NET实时无
闪烁
刷新
Image
的内容
解决
方法一
根据数据的变化,实时绘图
图形
,利用UpdatePanel和Timer让
Image
实时显示,最近开始的时候每刷新一次
Image
就闪一次,非常不舒服,后来通过不懈努力终于不闪了。这是一种
解决
方法,其他的方法在继续寻找中。有更好地方法请大家分享。提供的代码包含完整的前端页面代码和后端.cs代码,可直接运行。
文字
图形
的平滑移动
文字、
图形
水平、垂直移动无明显
闪烁
CacheBmp = new Bitmap(OrgBmp); G = Graphics.From
Image
(CacheBmp); Pen mypen = new Pen(Color.Blue, 2); // G.DrawString("ABCDEFG12345", new Font("宋体", 20), Brushes.Green, new PointF(PosX, 50)); G.DrawRectangle(mypen, 70, PosY + 20, 80, 50); G.DrawEllipse(mypen, 70, PosY + 80, 80, 80);
第1章 架构师工具箱之Docker
本章节的内容会讲到Docker的使用和应用场景、以及Docker中最核心的
Image
和Contailer。对于初学者来说,课程会介绍Docker的安装和部署。接着更进一步的分析
Image
和Container的本质。通过编写自己的Dockerfile来构建Docker镜像并发布运行。在对docker有了基础的认识之后,会进一步分析Docker的高阶使用,如网络配置、Docker数据持久化、Docker Compose、Docker Swarm等。几乎全方位的涵盖了Docker的整个体系。
《C#完全自学手册电子图书》\第6章
图形
图像编程
Graphics对象在System.Drawing命名空间中,该对象封装了GDI+绘图的所有方法。Graphics对象就像一个画家,使用笔Pen对象或刷子Brush对象就能绘制出不同的图像
Image
对象和图标Icon对象,也可以使用不同的字体Font对象绘制不同的文字内容,还可以利用StringFormat对象指定文字的对齐方式。为了减少或消除重绘时产生的
闪烁
,可以使用BufferedGraphicsContext对象提代的缓冲机制。Graphics对象可以用下面三种方法来创建。
matlab灰度处理代码-visual_stim:处理并显示给定视频文件中的激励
matlab灰色处理代码自然运动刺激 处理视频文件以创建和显示视觉刺激。 目录 依存关系 在MATLAB R2019a和R2020b上测试。 MATLAB R2020b需要使用
Image
Processing Toolbox附加组件。 心理物理学工具箱3.0.17。 性能随
图形
硬件而异。 用法 在视频文件上调用video2stim.m (当前仅使用8位灰度.avi和24位彩色.mp4文件进行了测试),以生成降采样的棋盘
闪烁
文件和卷积的边缘检测文件。 调用边缘检测文件上的dispmovie.m以直接显示。 调用降采样的文件上的dispmovie_movingbar.m以显示在背景棋盘
闪烁
之间移动的亮条。 工作流程示例 >> cd visual_stim >> video2stim('myvideo.avi', 'input_dist', 0.5, 'input_focal_length', 16, 'input_sensor_size', [36 24]); % corresponds to 0.5 meter distance between camera and object, 16
非技术区
828
社区成员
53,611
社区内容
发帖
与我相关
我的任务
非技术区
Delphi 非技术区
复制链接
扫一扫
分享
社区描述
Delphi 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章