Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.23;
Скачать: CL | DM;

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Dmk ©   (2002-08-02 23:39) [0]

У меня в классе определен обработчик сообщения на WM_PAINT.
А на WM_MOUSEMOVE стоит вызов WM_PAINT. При скроллинге по WM_MOUSEMOVE отрисовка WM_PAINT начинается не сразу, а только по истечении какого-то времени. Примерно через четверть-секунды. При этом, видимо где-то "сохраняются" другие вызовы и происходит прорисовка с эффектом "Хвоста". Похоже на мышиный шлейф из курсоров, только из Bitmap"ов.

Посоветуйте пожалуйста что-нибудь.
PS. Возникает такой эффект на очень быстрых тачках > 1,5GHZ P4.


 
Dmk ©   (2002-08-02 23:59) [1]

Вот код функций:

Procedure TDrawForm.WMMouseMove(var m: TWMMouseMove);
var x,y: Integer;
begin
If FAction then exit;

x := m.XPos;
y := m.YPos;

//Global mouse positions
MouseX := x;
MouseY := y;
//...
if LeftMoving then
begin
mMovePosX := x;
mMovePosY := y;
//...
ofsMouseX := (mDownPosX - mMovePosX);
ofsMouseY := (mDownPosY - mMovePosY);
//...
If ((ofsMouseX <> 0) or (ofsMouseY <> 0)) then
begin
HorzScrollBar.Position := HorzScrollBar.Position + (ofsMouseX);
VertScrollBar.Position := VertScrollBar.Position + (ofsMouseY);
//...
sPosX := HorzScrollBar.Position;
sPosY := VertScrollBar.Position;
//...
vpDraw(sPosX,sPosY,dtRegionRepaint);
//...
mDownPosX := mMovePosX;
mDownPosY := mMovePosY;
//...
CrossDrawed := false;
end;
end;//If LeftMoving


//.................
if RightMoving then
begin
mMovePosX := x;
mMovePosY := y;
//...
ofsMouseX := -(mDownPosX - mMovePosX) * 4;
ofsMouseY := -(mDownPosY - mMovePosY) * 4;
//...
If ((ofsMouseX <> 0) or (ofsMouseY <> 0)) then
begin
HorzScrollBar.Position := HorzScrollBar.Position + (ofsMouseX);
VertScrollBar.Position := VertScrollBar.Position + (ofsMouseY);
//...
sPosX := HorzScrollBar.Position;
sPosY := VertScrollBar.Position;
//...
vpDraw(sPosX,sPosY,dtRegionRepaint);
//...
mDownPosX := mMovePosX; //


 
Dmk ©   (2002-08-04 00:07) [2]

Получается так: провел карандашом по бумаге(нарисовал линию), а потом этот карандаш едет до конечной точки некоторое время. Причем по каждой точке.



Страницы: 1 вся ветка

Текущий архив: 2002.09.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
4-73928
ИгорьК
2002-06-25 16:57
2002.09.23
Период бездействия юзера


4-73939
manton
2002-08-06 14:23
2002.09.23
Журнал событий


1-73592
bs
2002-09-12 09:00
2002.09.23
Как соединить два элемента из двух разных ListBox-ов линией


3-73499
Antipich
2002-08-31 19:04
2002.09.23
Таблицы *.XML


14-73833
Aga
2002-08-27 12:55
2002.09.23
?