Invalidate, Repaint, Update, Refresh之間的區別

Refresh和Repaint是一样的,它只是简单地调用了Repaint.
Update会导致整个窗口(对于没有窗口的TGraphicControl来说,就是它的父控件的窗口)立即处理WM_PAINT消息,即重画应该画的部分.
Invalidate使控件所在窗口的控件客户区域(对于TWinControl来说就是它的客户区域,对于TGraphicControl来说就是它的父控件的窗口在它的区域范围内的部分)失效,从而产生一个WM_PAINT消息,但并不马上重绘,直到其它消息处理完或遇到一个Update的调用.
Repaint是立即重绘该控件,在TWinControl中其实就是调用了Invalidate和Update,在TGraphiControl中分不同情况作了不同处理,逻辑稍复杂一些,但功能是一样的.

时间: 2024-10-07 23:11:25

Invalidate, Repaint, Update, Refresh之間的區別的相关文章

sql server char nchar nvarchar varchar之間的區別

char存储固定长度的字符串,最大长度为8000个字节. varchar存储可变长度的字符串,最大长度为8000个字节. nchar存储固定长度的Unicode字符串,最大长度为4000个字符. nvarchar存储可变唱的的Unicode字符串,最大长度为4000值字符. 注意的是: 在分配存储空间上会有不同,如varchar(10)分配10个字节 nvarchar(10)则可以分配20个字节.也就是说nvarchar(10)要不varchar(10)存储较多的信息.因为一个为字节存储,一个为

C# WinForm窗体 控件Control 的 Invalidate、Update、Refresh的区别

Control.Refresh - does an Control.Invalidate followed by Control.Update.Refresh: 强制控件使其工作区无效并立即重绘自己和任何子控件.== Invalidate Update Control.Invalidate - invalidates a specific region of the Control (defaults to entire client area) and causes a paint messa

Impala 中invalidate metadata和refresh

首先了解一下:Impala如何融入Hadoop生态系统 Impala使用了Hadoop生态系统中许多熟悉的组件.Impala可以作为消费者和生产者与其他Hadoop组件交换数据,因此它可以以灵活的方式适合您的ETL和ELT管道. How Impala Works with HiveImpala的一个主要目标是使SQL-on-Hadoop操作足够快速和高效,以吸引新的用户类别,并向新的用例类型开放Hadoop.在实用的情况下,它利用现有的Apache Hive基础设施(许多Hadoop用户已经拥有

單反數碼相機和普通數碼相機的區別 !

數碼單鏡頭反光DSLR(Digital Single Lens Reflex)照相機,簡稱數碼單反相機.在這種系統中,反光鏡和棱鏡的獨到設計使得攝影者可以從取景器中直接觀察到通過鏡頭的影像.單鏡頭反光照相機的構造圖中可以看到,光線透過鏡頭到達反光鏡後,折射到上面的對焦屏並結成影像,透過接目鏡和五棱鏡,我們可以在觀景窗中看到外面的景物 光通過透鏡 (1),被反光鏡(2)反射到磨砂取景屏(5)中.通過一塊凸透鏡(6) 並在五棱鏡(7)中反射,最終圖像出現在取景框(8)中.當按下快門,反光鏡沿箭頭所示

html入門 如何 區別行級元素 和 塊級元素

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>块级元素和行级元素區分對比</title> </head> <body> <!-- 作者:offline 时间:2018-05-07 描述:最重要的區別->块级元素獨占一行 行级元素在同一行(空間足夠的情況下) 用途:例如我們分別需要在<img>

菜鳥,程序員,大師,神人 四個等級寫出代碼的區別.

# !/usr/bin/env python# -*- coding: utf-8 -*-# 據說係菜鳥,程序員,大師,神人 四個等級寫出代碼的區別...import math as m#for i in range(100000): x = int(m.sqrt(i + 100)) y = int(m.sqrt(i + 268)) if(x * x == i + 100) and (y * y == i + 268): print (i)#print([i for i in range(100

setImageResource和setBackgroundResource的區別

它們的原型如下:void android.widget.ImageView.setImageResource(int resId)void android.view.View.setBackgroundResource(int resid)區別是:setImageResource與xml中的src的屬性才是相匹配的,而setBackgroundResource是與xml中的background屬性相匹配的.

java中paint repaint update 之间的关系

最近总结了一下java中的paint,repaint和updata三者之间的关系,首先咱们都知道用paint方法来绘图,用repaint重绘,用update来写双缓冲.但是他们之间是怎么来调用的呢,咱们来分析一下(想直接看结果,请跳过分析过程): -----------------------------------------------------------------------------------------------------------------------------

C#中 [], List, Array, ArrayList 區別

[] 是針對特定類型.固定長度的.List 是針對特定類型.任意長度的.Array 是針對任意類型.固定長度的.ArrayList 是針對任意類型.任意長度的.Array 和 ArrayList 是通過存儲 object 實現任意類型的,所以使用時要轉換. Array 是抽象類別,不能使用 new Array 創建. ArrayList的命名空間是System.Collections 預設不會載入,必須自行引用. Array arrayTest = Array.CreateInstance(ty