Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-23245
sachem
2003-01-29 15:27
2003.05.08
менять картинки слайдами!


6-23252
Новичек
2003-03-12 17:11
2003.05.08
Ожидание определенной строки от ServerSocket.


6-23260
Coro
2003-03-12 08:48
2003.05.08
MIDAS


14-23351
anpv
2003-04-20 14:07
2003.05.08
MySQL


1-23142
Lin
2003-04-28 11:18
2003.05.08
Как CheckBox поместить в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский