2 weixin 37736913 weixin_37736913 于 2017.09.19 11:18 提问

c++ builder的Onpaint事件 5C

当使用Canvas 的draw 和stretchDraw方法绘图,点击其他窗体,绘制的图形会消失?是因为点击其他窗体后,delete 释放点了bitmap ?
书上还说Tpaintbox1还可能被遮挡一部分,不需要整个重新绘制,什么原理?

1个回答

caozhy
caozhy   Ds   Rxr 2017.09.19 11:33

没错,窗体被遮挡,那么就需要重画。一个变通的办法,把图像画在bitmap对象里,再作为背景设置给窗体或者图片框。这样系统自动重绘

caozhy
caozhy 回复weixin_37736913: 窗体最小化,被遮挡,其它程序发送wm_paint都会重绘。
10 个月之前 回复
weixin_37736913
weixin_37736913 是不是因为函数完成了delete 操作的原因?onpaint优先级怎么样,在什么时候触发。为什么书上会有遮挡一部分的说法。
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c# 如何重写控件的OnPaint事件
使用OnPaint事件可以随时绘制图形 调用窗体的OnPaint事件protected override void OnPaint(PaintEventArgs e){    base.OnPaint(e);    //绘图} 但是如何重写控件的OnPaint事件呢?比如说绘图是在PictureBox中绘制的,那么如何重写PictureBox的OnPaint事件?
C#中Form的Paint事件响应方法与重载虚方法OnPaint()的区别
Form_Paint()方法是Paint事件的响应方法,OnPaint是可重载的虚方法,OnPaint方法是调用Paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的: protected virtual OnPaint(PaintEventArgs e) { if(paint != null) { paint(this,e);
C# 重写空间 Onpaint事件
我们无法直接在窗体的代码中重写控件的OnPaint事件,只能重写窗体的OnPaint事件。 重写控件的OnPaint事件,必须创建一个新的控件。这个控件继承Windows的控件,然后在创建的控件中重写控件的OnPaint事件。 以PictureBox为例: //定义一个新的控件,继承PictureBox控件 public cl
为 TPanel 增加 OnPaint 事件
<br />有时候,我们需要少量修改或增加已有控件的行为或属性,但又不想新写个控件注册到组件面板上或动态创建来用,可以通过同名控件派生来实现。<br /><br /> 以下这个简单的例子,为 TPanel 增加了 OnPaint 事件:<br /> <br />unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCt
C# OnPaint
要让窗体在载入的时候就显示图像必须重写OnPaint方法 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.T
MFC OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别
OnPaint()函数中最先调用CDialog::OnPaint()和最后调用CDialog::OnPaint()的巨大区别,如果没有注意这个问题就会出现无厘头式的绘图问题-- 效果就是出不来!在经过两个多小时的折磨后法相问题所在,总结出教训:         OnPaint()函数中首先就调用CDialog::OnPaint()函数: //给主窗体客户区添加位图背景 void CBacki
调出隐藏事件OnPaint的方法
<br />我这边有个控件,事件窗口里没有OnPaint这个事件,我有想到建个自定义控件,把这个OnPaint事件调出来可以用,但是不知道怎么弄<br />那怎么样才能调用这个方法,事件窗口没这个选项<br />首先你要窗体或者控件无效接着就进行重绘操作了<br />有没有直接点的,一般其它控件,在那个事件窗口里,双击那个Paint事件,程序里就有<br />这样形式的代码,我就把画图代码写在里面<br />第1个页面里有个11列的DATAGRID,事先的列名都是公司里规定好的,不许我们改动的,我给它捆绑了
wxwidget onpaint
1.   //  wxWidgets documentation: Note that In a paint event handler,     // the application must *always* create a wxPaintDC object, even     // if you do not use it. Otherwise, under MS Windows,
把OnDraw和OnPaint弄清楚(转贴)
2007-04-06 10:12:47 var btns = document.getElementById("edit_delete_btns"); if(relation == MopBlog.User.RELATION_SAMER){ btns.style.display = "block"; }else{
2.几个处理函数的理解和比较:(OnInitDialog,OnPaint等)以及对话框生成和关闭。
CRankDlg m_rank;m_rank.DoModal();当dlg.DoModal()后,显示一个模态对话框,此时DoModal()函数并不返回,直到用户关闭此对话框时,DoModal才返回。如果用户点击了确定按钮,那么DoModal()函数就返回IDOK。IDOK是一个宏。确定按钮代码:void CSettingDlg::OnBnClickedButtonOk(){ // TODO: 在...