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