Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.06.2010, 00:16
Cracer Cracer вне форума
Прохожий
 
Регистрация: 28.12.2008
Сообщения: 33
Репутация: 10
Вопрос Нестандартная форма

Доброго времени суток уважаемые
Проблема такая: Есть форма со свойствами
Код:
BorderStyle: bsNone
Color: clFuchsia
TransparentColor: True
TransparentColorValue: clFuchsia

На форме Image (Компонент PNGimage, с поддержкой прозрачности). В принципе все как надо, но смотрим скриншот:


Как убрать эти розовые галлюцинации по краям рисунка?
Ответить с цитированием
  #2  
Старый 17.06.2010, 00:45
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

нужно более качественно делать PNG, что бы прозрачность была нормальной. Выложите сюда оригинал PNG файла, посмотрим что с ним не так
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
  #3  
Старый 17.06.2010, 08:05
Rjkzy Rjkzy вне форума
Прохожий
 
Регистрация: 15.06.2010
Адрес: дома
Сообщения: 34
Репутация: 10
Лампочка

можно сделать это по-другому. свойства формы не трогаем, но зато создаём дополнительное монохромное изображение, которое будет шаблоном. дальше пишем в Formcreate вставляем :
Код:
var
pict:TPicture;
begin
pict:=TPicture.Create;
pict.LoadFromFile('fon.bmp');
SetWindowRgn(Form1.Handle,RegionFromPicture(pict,RGB(255,255,255)),True);
pict.Free;

и отдельно функцию

Код:
function TForm1.RegionFromPicture(pict: TPicture; backcolor: TColor): HRGN;
var
rgn,resRgn: HRGN;
x,y,xfirst:Integer;
begin
  resRgn:=CreateRectRgn(0,0,0,0);
  for y:=0 to pict.Height-1 do
    begin
    x:=0;
    while x<pict.Width do
      begin
      if (pict.Bitmap.Canvas.Pixels[x,y] <> backcolor) then
        begin
        xfirst:=x;
        Inc(x);
        while (x<pict.Width) and (pict.Bitmap.Canvas.Pixels[x,y]<>backcolor) do
          Inc(x);
        rgn:=CreateRectRgn(xfirst,y,x-1,y+1);
        CombineRgn(resRgn,resRgn,rgn,RGN_OR);
        DeleteObject(rgn);
        end;
      Inc(x);
      end;
    end;
  Result:=resRgn;
end;
Admin: Учимся пользоваться тегами!

таким образом форма получиается как бы "дырявой", без всякой прозрачности.

Последний раз редактировалось Admin, 17.06.2010 в 10:04.
Ответить с цитированием
  #4  
Старый 17.06.2010, 08:08
Rjkzy Rjkzy вне форума
Прохожий
 
Регистрация: 15.06.2010
Адрес: дома
Сообщения: 34
Репутация: 10
По умолчанию

а в случае с PNG - если делал в фотошопе, то убери сглаживание и пройдись по краям карандашём каким-нибудь, там цвет получается не чисто пурпурный, а с небольшим переходом, отсюда и кайма
Ответить с цитированием
  #5  
Старый 17.06.2010, 08:41
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Мое мнение сходится на том же, нужно более качественно обработать картинку...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #6  
Старый 17.06.2010, 08:50
Rjkzy Rjkzy вне форума
Прохожий
 
Регистрация: 15.06.2010
Адрес: дома
Сообщения: 34
Репутация: 10
По умолчанию

гораздо проще и качественнее получается с регионами. и тут же не дизайнерский форум а программисткий в конце-концов :-D
Ответить с цитированием
  #7  
Старый 17.06.2010, 11:20
Cracer Cracer вне форума
Прохожий
 
Регистрация: 28.12.2008
Сообщения: 33
Репутация: 10
Хорошо

Всем большое спасибо, убрал при обработке сглаживание получилось идеально
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025