![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток уважаемые
![]() Проблема такая: Есть форма со свойствами Код:
BorderStyle: bsNone Color: clFuchsia TransparentColor: True TransparentColorValue: clFuchsia На форме Image (Компонент PNGimage, с поддержкой прозрачности). В принципе все как надо, но смотрим скриншот: ![]() Как убрать эти розовые галлюцинации по краям рисунка? |
#2
|
||||
|
||||
![]() нужно более качественно делать PNG, что бы прозрачность была нормальной. Выложите сюда оригинал PNG файла, посмотрим что с ним не так
![]() Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы... ICQ: 593977748 Nick: Marvel |
#3
|
|||
|
|||
![]() можно сделать это по-другому. свойства формы не трогаем, но зато создаём дополнительное монохромное изображение, которое будет шаблоном. дальше пишем в 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, 17.06.2010 в 10:04. |
#4
|
|||
|
|||
![]() а в случае с PNG - если делал в фотошопе, то убери сглаживание и пройдись по краям карандашём каким-нибудь, там цвет получается не чисто пурпурный, а с небольшим переходом, отсюда и кайма
|
#5
|
||||
|
||||
![]() Мое мнение сходится на том же, нужно более качественно обработать картинку...
В начале был Бит, потом Байт и только потом появилось Слово... |
#6
|
|||
|
|||
![]() гораздо проще и качественнее получается с регионами. и тут же не дизайнерский форум а программисткий в конце-концов :-D
|
#7
|
|||
|
|||
![]() Всем большое спасибо, убрал при обработке сглаживание получилось идеально
![]() |