![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток уважаемые
![]() Проблема такая: Есть форма со свойствами Код:
BorderStyle: bsNone Color: clFuchsia TransparentColor: True TransparentColorValue: clFuchsia На форме Image (Компонент PNGimage, с поддержкой прозрачности). В принципе все как надо, но смотрим скриншот: ![]() Как убрать эти розовые галлюцинации по краям рисунка? |
|
#2
|
||||
|
||||
|
нужно более качественно делать PNG, что бы прозрачность была нормальной. Выложите сюда оригинал PNG файла, посмотрим что с ним не так
![]() |
|
#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
|
|||
|
|||
|
Всем большое спасибо, убрал при обработке сглаживание получилось идеально
![]() |