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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2012, 14:07   #1
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию Плавный переход от формы-картинки к фону

Доброго времени суток.
Есть форма, фоном которой устанавливается изображение в timage(картинка ниже), а в последствии с помощью указанного ниже кода пиксели формы соответствующие розовому цвету на картинке(цвет пикселя с координатами 0:0) удаляются.
В итоге получается красивая форма.
Также необходимо добавить что до перечисленных выше действий изображение прогоняется через мини програмку которая по простейшему алгоритму окрашивает в цвет 0:0 координаты плавный переход от картинки к розовому фону, т.к. если этого не сделать пиксели хоть немного отличающиеся градацией розового от 0:0 координаты не будут удалены и получается уродство(форму обрамляет розовая полоса пикселей которые не были удалены).

Код:
var
regn,tmpRegn,x,y:integer;
nullClr: TColor;
...
  FMain.brush.bitmap:=bg.picture.bitmap;
  nullClr := bg.picture.Bitmap.Canvas.Pixels[0, 0];
  regn := CreateRectRgn(0, 0, bg.picture.Graphic.Width,
  bg.picture.Graphic.Height);
  for x := 1 to bg.picture.Graphic.Width do
    for y := 1 to bg.picture.Graphic.Height do
      if bg.picture.Bitmap.Canvas.Pixels[x - 1, y - 1] = nullClr then
      begin
        tmpRegn := CreateRectRgn(x - 1, y - 1, x, y);
        CombineRgn(regn, regn, tmpRegn, RGN_DIFF);
        DeleteObject(tmpRegn);
      end;
  SetWindowRgn(FMain.handle, regn, true);





Вот по такому принципу реализована прорисовка окна и все вроде бы неплохо если бы не 1 серьезный минус. На границе перехода от формы к ее фону(т.е. рабочему столу) полностью отсутствует какая-либо плавность перехода, как следствие угловатость, в некоторых случаях это не страшно, а вот если на краю формы должно быть например дерево с прозрачным фоном выходит уродство.

Подскажите пожалуйста как решить эту проблему с плавным переходом или наставьте на путь истинный в направлении которого мне нужно искать ответы.
Заранее спасибо.

Последний раз редактировалось Crystallon; 30.07.2012 в 14:11.
Crystallon вне форума Ответить с цитированием
Старый 01.08.2012, 09:25   #2
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

используй UpdateLayeredWindow и PNG картинки
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход от формы к форме Prizrak86 C# (си шарп) 16 20.05.2015 20:34
Плавный переход между картинками ZvEr_HaCkEr Мультимедиа в Delphi 11 03.06.2011 02:39
Переход с формы на отчет Kot9ra Microsoft Office Access 2 10.06.2010 12:20
Плавный выход картинки Joystik Помощь студентам 3 16.12.2009 10:24
Вопросы по фреймам и градиентному фону Ururu HTML и CSS 9 19.02.2009 16:22