Форум: "Media";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизМерцание 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 вся ветка
Форум: "Media";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c