Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизПочему мерцает TMemo Найти похожие ветки
← →
Alex_C © (2006-10-13 10:09) [0]Хочу сделать свой мемо, чтоб не мерцало при перерисовке. Делаю свой компонент, переопределяю WMPaint:
procedure TMyMemo.WMPaint(var Message: TWMPaint);
var
i, dy : Integer;
PS: TPaintStruct;
DC: HDC;
aCanvas: TCanvas;
BitMap: TBitMap;
begin
DC:= Message.DC;
if DC= 0 then
DC:= BeginPaint(Handle, PS);
aCanvas:=TCanvas.Create;
BitMap := TBitMap.Create;
try
aCanvas.Handle:= DC;
aCanvas.Font:= Font;
BitMap.Height := Height;
BitMap.Width := Width;
BitMap.Canvas.FillRect(ClientRect);
with BitMap.Canvas do
begin
dy := 1;
for i:= 0 to Lines.Count-1 do
begin
Font.Color:= clBlack;
TextOut(1, dy, Lines[i]);
dy:= dy+ TextHeight("X");
end;
end;
BitBlt( aCanvas.Handle, 0, 0, BitMap.Width, BitMap.Height, BitMap.Canvas.Handle, 0, 0, SRCCOPY );
finally
if Message.DC = 0 then EndPaint(Handle, PS);
aCanvas.Free;
BitMap.Free;
end;
end;
еще добавляю:
constructor TMyMemo.Create(AOwner: TComponent);
begin
inherited;
ControlStyle := ControlStyle + [csOpaque];
end;
Однако все равно мерцает. Почему? Как запретить мемо перед WMPain очищать себя (я так понимаю из-за этого и мерцает).
← →
Kolan © (2006-10-13 10:10) [1]RichEdit?
ЗЫ
У меня Memo не мерцает...
← →
Zeqfreed © (2006-10-13 10:19) [2]Используй двойную буферизацию при выводе текста.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.045 c