当我在scrollbox内放个paintbox的时候,发现当滚动重绘的时候的行为好像是只更新并添加需要的部分,即滚动出来的新的部分,但这样会导致在滚动刷新的时候出现图像破碎的感觉,为了解决这个问题,我子类化了scrollbox,截获其WM_VSCROLL和WM_HSCROLL,然后invalidate对应的scrollbox,这样就不会出现破碎感了,但不知道会不会导致效率的下降。
C, C++, Obj-C
[ZT]BCB6中的#Pragma说明
1.#pragma alignment
alignment pragma用于显示一条当前内存对齐(alignment)和枚举(enum)字节大小的消息。例如:
W8035: The alignment is 8 bytes, the enum size is 4 bytes
该消息必须在打开编译器选项”show general messages”或编译器开关”-wmsg”后才能显示。
TdxBarSpinEdit 不能更新当前数字的问题
今天用的时候才发现不像普通的spinedit,不管是自己输入或是通过旁边的按钮都不能更新数字。
You should set the BarManager’s AlwaysSaveText property to TRUE.
Bastian Bauwens
DX-Squad
而如果是MDI子窗体的bar同时有合并操作的话则要同样设置主窗体的bar manager的此属性才可以。
[ZT]Eliminate flicker when painting on a form or a TPaintBox control.
Answer:
A lot of programmers complain about flicker when they draw on a TPaintBox control, when they draw on the form’s Canvas, or when they paint on the Canvas of a control that they have written. One newsgroup post contained a subject line that read: “TPaintBox wicked flicker, can it be stopped.” The answer is yes, and the solution is simple, once you understand what is going on.
用devexpress的TdxPNGImage为TOpenPictureDialog加入png图片预览功能
在需要的地方(整个程序的入口或某个form加载的时候)加入
#include “dxGDIPlusClasses.hpp”
// 不知道这个check有没有必要…
CheckPngCodec();
// 注册png文件类型,为以后的TOpenPictureDialog的预览等其他地方用
TPicture::RegisterFileFormat(__classid(TdxPNGImage),
这样就ok了!很简单。
Gdi+画图时的颜色变换矩阵
今天在用gdi+画图片的时候,因为需要用到alpha混合实现半透明效果,本来以为像swt一样有个直接的setAlpha什么的,后来发现并非如此,gdi+实现的方式是通过”颜色变换矩阵”,而且,这样不只能做到改变画图时的alpha还能实现一些其他的颜色变换,比如反色,黑白等等,原理有点像D3D的变换矩阵,codeproject上的一篇文章对此解释的很清楚了,留个记录以后参考:http://www.codeproject.com/vb/net/colormatrix.asp
TScrollBox内加TImage后的滚动速度
当TScrollBox内的TImage过大且TScrollBox本身Bound也较宽的时候会出现滚动条在滚动的时候明显延迟的情况,可能是由于我的绘图方式问题,现在是用GDI+通过TImage的handle直接绘图,另外不是在TImage的OnPaint里去重绘的,而是用了timer定时更新,因为我需要实现一些动画效果,现在尝试过将timer定时绘图的部分用一个TThread单开一个线程实现,但效果仍不是很理想。还尝试了一下根据TScrollBox的滚动条确定TImage的可视区域并用SetClip减掉没用的部分,最后也是稍微好了一点,当ScrollBox很大(整个窗口全屏的时候),拖动滚动条依然会有延迟,目前正在继续研究中……
C++ Builder的__published关键字
Category
Keyword extensions
Syntax
__published:
Description
The __published keyword was added to support the VCL.