Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2012, 00:31   #1
mrbadge
Пользователь
 
Регистрация: 26.01.2011
Сообщений: 48
По умолчанию Рисование поверх TImage

В TImage загружена bmp, поверх рисуется объект (постоянно перемещается). Свойство кисти NotXor теперь не помогает - траектория движения остается все равно (с пустым Image'м работало). Собственно вопрос: как от этого избавиться?

Заранее спасибо
mrbadge вне форума Ответить с цитированием
Старый 31.03.2012, 01:33   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Предложите, пожалуйста, свой код.
Delphi_ProGer вне форума Ответить с цитированием
Старый 31.03.2012, 01:56   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Не понятно, чего вы хотите добиться, но могу предложить вариант рисовать не на TImage, а на TPaintBox.
Arigato вне форума Ответить с цитированием
Старый 31.03.2012, 08:03   #4
mrbadge
Пользователь
 
Регистрация: 26.01.2011
Сообщений: 48
По умолчанию

Загрузка картинки:
Код:
 OpenPictureDialog1.InitialDir:=GetCurrentDir;
  if OpenPictureDialog1.Execute then
  begin
    Fname:=OpenPictureDialog1.FileName;
    with Form1 do
    begin
      img1.AutoSize:=True;
      img1.Picture.LoadFromFile(Fname);
      img1.Picture.Bitmap.Canvas.Brush.Style:=bsClear;
       ...
   end;
После различных вычислений и тд рисование:
Код:
 //fld.Canvas.FillRect(Rect(0,0,wdth,hght));
  fld.Canvas.MoveTo(ship_back.X,ship_back.Y);
  fld.Canvas.LineTo(ship_front.X,ship_front.Y);
  fld.Canvas.Ellipse(ship_front.X-2,ship_front.Y-2,ship_front.X+2,ship_front.Y+2);
Без картинки можно было использовать филлрект, но теперь это вызовет белый прямоугольник. Нужно именно перерисовывать объект поверх картинки, удаляя его предыдущее положение.
Можно, конечно, каждый раз заново грузить картинку, но это ерунда
(fld и img1 - один и тот же TImage)
mrbadge вне форума Ответить с цитированием
Старый 31.03.2012, 08:19   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно, конечно, каждый раз заново грузить картинку, но это ерунда
А грузить и не надо. Один раз загрузи, а потом несколько раз на канве в OnPaint отрисовывай. Аригато правильно говорит - прислушайся к его словам.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование поверх картинки rokotokobot Мультимедиа в Delphi 10 18.02.2012 20:28
Рисование линии поверх формы и лейблов Abbath1349 Общие вопросы .NET 0 30.03.2011 07:04
Рисование поверх окна gtk Bиталий Qt и кроссплатформенное программирование С/С++ 0 21.03.2011 16:57
Рисование поверх DirectX Bibus Помощь студентам 0 25.06.2009 20:04
Рисовать поверх TImage odi_noki Мультимедиа в Delphi 10 09.04.2009 23:10