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

Вниз

Перемещение фигуры на TCanvas   Найти похожие ветки 

 
Виталька2005   (2005-09-28 18:38) [0]

Здравствуйте, мастера.
Я хочу мышкой перетаскивать некоторую фигуру (напр окружность) по канвасу. На пейнтбоксе
всё работает приемлемо, но когда беру TImage - начинаются жуткие тормоза.
А  без TImage обойтись не могу, т.к. мне нужна прозрачность
(под ним в качестве фона другая картинка лежит)
Подскажите как тормоза убрать?


 
Antonn ©   (2005-09-28 19:09) [1]

над image ложить paintbox, и перетаскивать по нему некоторую фигуру(напр окружность).


 
Виталька2005   (2005-09-28 23:31) [2]

Antonn, не могу сделать пейнтбокс прозрачным:(


 
Antonn ©   (2005-09-29 03:53) [3]

ну это не сложно:

with paintbox1.Canvas do begin
  brush.Style:=bsclear;
  fillrect(paintbox1.ClientRect);

  brush.Style:=bsSolid;

 //рисуем свое, например эллипс
end;


 
ЮЮ ©   (2005-09-29 08:30) [4]

А что мещает на пейнтбоксе сначала вывести картинку, а потом рисовать круг?


 
Antonn ©   (2005-09-29 09:33) [5]

ЮЮ ©   (29.09.05 8:30) [4]
думаю, как всегда - если в TImage неизвестно что, JPEG или BMP.


 
Виталька2005   (2005-10-01 23:45) [6]

Получилось только сделать, как ЮЮ в  (29.09.05 08:30) [4] сказал.
А если под пейнтбокс имадж положить, то окружность
при перетаскивании за собой след оставляет.
Т.е. вот это
 Brush.Style:=bsClear;
 FillRect(ClipRect);
эффекта не имеет получается.

Вот код целиком:


with PaintBox1.Canvas do
begin
 Brush.Style:=bsClear;
 FillRect(ClipRect);

  Pen.Width:=2;
  Pen.Color:=Circles[i].color;
  Arc(x0-r,y0-r,x0+r,y0+r,x0+r,y0,x0+r,y0);
end;


меня конешно и просто пейнтбокс устраивает, но теперь просто интересно, почему не работает как Antonn предложил.


 
Dereks ©   (2005-10-06 13:44) [7]

Попробуй фоновую картинку загрузить в переменную типа TBitmap, и засунуть в обработчик OnMouseMove пейнтбокса текст:
...
var {глобальные}
b: TBitmap;//содержит фоновые рисунок
bool: boolean;//лог. перем. показывает был ли произведён щелчок на канве
...
{при создании}
begin
b:=TBitmap.create;
b.loadfromfile("....");
end;
{OnMouseDown}
...
begin
bool:=true;
....
end;
{OnMouseMove}
begin
if not bool=true then exit;
PaintBox1.canvas.assign(b);
{алгоритм перетаскивания фигуры}
end;
{OnMouseUp}
..
begin
bool:=false;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1140687553
K_Lock
2006-02-23 12:39
2006.03.12
GEN_ID(num_value,1) - must have a value


1-1139388998
Дмитрий_Б
2006-02-08 11:56
2006.03.12
Текст в QR под углом 90 градусов


6-1133163165
SergP.
2005-11-28 10:32
2006.03.12
WinInet. Узнать размер контента, принимаемого по http/https


15-1139220980
lak__b
2006-02-06 13:16
2006.03.12
Подскажите пожалуйста на счет мобил


2-1140765515
Alex17
2006-02-24 10:18
2006.03.12
Чтение