Главная страница
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.017 c
14-73864
vvs1981
2002-08-29 08:33
2002.09.23
Где взять FIB 4.6 или выше for Freeware или ломанные?


1-73610
Злой!!!
2002-09-12 12:51
2002.09.23
Перевод строки


3-73528
bib
2002-09-02 18:09
2002.09.23
Помогите!


7-73897
Stanislav SM
2002-07-12 16:22
2002.09.23
Эмуляция движения и нажатия мыши


1-73747
Ag2002
2002-09-11 18:45
2002.09.23
Уровень