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

Вниз

Мерцание Image   Найти похожие ветки 

 
thvfrjd   (2005-12-23 10:30) [0]

Имеется простейщий граф редактор рисование происходит примерно вот так:
procedure TForm5.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin

If l then begin
Image1.Picture.Bitmap.Assign(ris);
case fig of
1: Image1.Canvas.LineTo(x,y);
2: Image1.Canvas.Ellipse(x1,y1,x,y);
3: Image1.Canvas.Rectangle(x1,y1,x,y);
end;
Image1.Canvas.MoveTo(x1,y1);
end;
При движении мыши появляется неприятное мерцание Image, можно как то избавиться от него?


 
WondeRu ©   (2005-12-23 11:56) [1]

рисовать сначала на "невидимом" TBitmap, затем копировать на TImage


 
Glex ©   (2006-01-08 17:36) [2]

Оно же: Form.DoubleBuffered:= true =)))))))))))


 
Gero ©   (2006-01-08 18:00) [3]

Не используй TImage, для рисования на нем он плохо подходит.


 
antonn ©   (2006-01-08 18:10) [4]

thvfrjd   (23.12.05 10:30)
во первых, как сказал WondeRu, нужно висовать в буфере.
во вторых - что за "ris" такой?

создаем временный битмап.
Глобально описываем:
var BT:TBitmap;

в FormCreate или еще где (допустим, что исходный рисунок хранится в ris):
BT.width:=ris.width;
BT.height:=ris.height;
Image1.picture.bitmap.width:=ris.width;
Image1.picture.bitmap.height:=ris.height;

В MouseMove:
//если ris по размеру image
bt.canvas.copyrect(rect(0,0,bt.width,bt.height),ris,rect(0,0,bt.width,bt.height));
case fig of
1: Image1.Canvas.LineTo(x,y);
2: Image1.Canvas.Ellipse(x1,y1,x,y);
3: Image1.Canvas.Rectangle(x1,y1,x,y);
end;
//...
//тыры-пыры
Image1.picture.bitmap.canvas.copyrect(rect(0,0,Image1.width,Image1.height),bt,rect(0,0,bt.width,bt.height));



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

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

Наверх




Память: 0.47 MB
Время: 0.046 c
2-1148119883
Glex
2006-05-20 14:11
2006.06.04
Как получить имена всех подпапок, находящихся в данной папке?


15-1147263390
fast2
2006-05-10 16:16
2006.06.04
Посоветуйте какой-то простенький ICQ-сервер.


3-1144997749
RomanH
2006-04-14 10:55
2006.06.04
Доступ из БД1 в БД2 одного коннекта


2-1147843772
Tempora
2006-05-17 09:29
2006.06.04
Как заменить прямые слеши на обратные в строке?


8-1136560269
Syrnik
2006-01-06 18:11
2006.06.04
DShow: Разделить стерео аудио на 2 моно