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

Вниз

Перемещение рисунка по канве.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
6-23249
FATman
2003-03-10 19:10
2003.05.08
как узнать сколько Мб скачано из сети?


1-23200
Бух
2003-04-25 00:22
2003.05.08
Два строки в заголовке стринггрида


1-23222
Xitrik
2003-04-25 12:59
2003.05.08
Как сделать ресурсный файл, который бы содержал в себе строки.


1-23139
Viktor Kushnir
2003-04-26 17:25
2003.05.08
PageControl или я торможу


14-23358
Дмитрий К.К.
2003-04-21 07:05
2003.05.08
Именинники 21 апреля