Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
ВнизПеремещение рисунка по канве. Найти похожие ветки
← →
Sour (2003-04-27 15:12) [0]Как можно реализовать эффект движения некого объекта по канве?
Например, есть какой-то рисунок загруженный в TBitmap. Свойство transperent этого Bitmap установлено в
true. Рисунок имеет сложную форму краев. Необходимо, чтобы этот рисунок двигался (Image1.Canvas.Draw(x, 10, Bitmap). Для этого нужно
стирать его "предыдущее положение", а если края неровные как это сделать? Ведь стирая его, например Canvas.Rectangle(<предыдущее положение>),
стирается и часть фона. Может есть другой метод реализации движения.
← →
DVM (2003-04-27 15:16) [1]1. Запомнить то что под ним и восстановить после стирания.
2. XOR
← →
Sour (2003-04-27 15:38) [2]Это как?
Можно пример для 1-ого и 2-ого?
← →
DVM (2003-04-27 16:17) [3]r:=Rect(0, 0, BitBg.Width, BitBg.Height);
//сохраняем фон
BitBg.canvas.CopyRect(r, canvas, Rect(x, y, x+BitBg.Width, y+BitBg.Height));
BitWork.Canvas.CopyMode:=cmSrcCopy;
//рисуем фон на временном изображении
BitWork.Canvas.CopyRect(r, BitBg.Canvas, r);
BitWork.Canvas.CopyMode:=cmSrcAnd;
//рисуем маску (маска - та же картинка, но с черным цветом везде, где выводимая картинка прозрачна и с белым - где не прозрачна
BitWork.Canvas.CopyRect(r, BitMask.Canvas, r);
BitWork.Canvas.CopyMode:=cmSrcPaint;
BitWork.Canvas.CopyRect(r, Bit.Canvas, r);
oldx:=x;
oldy:=y;
//выводим картинку на канвас
canvas.CopyRect(Rect(oldx, oldy, oldx+BitBg.Width, oldy+BitBg.Height),
BitWork.canvas,
r);
работает максимально быстро и без мерцаний.
← →
Sour (2003-04-27 20:25) [4]Подскажите пожплуйста, что за BitMask, Bit, BitWork и др.
Можно ли объяснить как реализовать движение допустим B: TBitmap по канве Image1.Canvas?
Что куда копировать?
P.S. А если в Image уже загружена картинка, то там уже ничего нельзя нарисовать?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c