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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2008, 21:48   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Прозрачность формы PNG, 2xTCV и др.

Можно ли как нибудь сделать прозрачную форму по кроям рисунка PNG и вообще как его поставить на форму?

Можно ли как нибудь сделать прозрачную форму по двум или более TransparentColorValue? В том смысле что бы на форме например $000000+$FFFFFF черный и белый были прозрачными.

Можно ли как нибудь сделать полупрозрачность формы по середине например? В том смысле что бы на форме например AlphaBlendValue относился только к какой нибудь отдельной части формы.

Можно ли как нибудь сделать борд формы в своей программе таким же большим как в проводнике Vista?

Просто сейчас нужно заготовку сделать программы с хорошим оформлением, а с одним TransparentColorValue например на закругленных краях (скорее можно сказать на заквадратенных) появляются острые углы которые ни как не катят, что называется.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 23.05.2008, 21:56   #2
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Почитай про регионы http://msdn.microsoft.com/en-us/libr...78(VS.85).aspx
Zeraim вне форума Ответить с цитированием
Старый 23.05.2008, 22:02   #3
AlexandrSid
Форумчанин
 
Регистрация: 31.10.2007
Сообщений: 103
По умолчанию

Цитата:
Просто сейчас нужно заготовку сделать программы с хорошим оформлением
Для красивого оформления формы есть компоненты Alpha..., я пробовал пользователям нравится
AlexandrSid вне форума Ответить с цитированием
Старый 23.05.2008, 22:19   #4
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Если вы имеете ввиду AlphaSkin то он и так уже используется, но его одного мало, более того нужно сделать по уже готовому изображению.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 24.05.2008, 02:25   #5
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
Лампочка

Смотри тут -> Gooooogle
Until The End Of Time
Showy вне форума Ответить с цитированием
Старый 24.05.2008, 11:59   #6
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Такой ответ можно было дать на любой из здесь задаваемых вопросов на этом форуме, по этому я и задал вопрос на форуме по тому что нужен четкий ответ на русском языке.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 25.05.2008, 01:19   #7
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
По умолчанию Чёткий русский ответ

Форма по PNG:
http://tripsin.narod.ru/notes/VariableTransparency.htm
но для этого надо GDI+, можно с помощью pnglib но чуток подругому.
с помощью pnglib в Bitmap грузил так:
Код:
type
  AlphaRGB = packed record
    B: Byte;
    G: Byte;
    R: Byte;
    A: Byte;
  end;
  pARGB = ^TARGB;
  TARGB = array [WORD] of AlphaRGB;
...
procedure LoadFromPNGFileForBG(FileName: String);
var
 PNG:TPNGObject;
 i,j:integer;
 pA: pARGB;
 pB: pByteArray;
begin
 bmp.PixelFormat:=pf32bit;
 PNG:=TPNGObject.Create;
 PNG.LoadFromFile(FileName);
 bmp.Width:=PNG.Width;
 bmp.Height:=PNG.Height;  
 BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,PNG.Canvas.Handle,0,0,SRCCOPY);
  for i := 0 to Height - 1 do
   begin
    pA := bmp.Scanline[i];
    pB := PNG.AlphaScanline[i];
    for j := 0 to Width - 1 do
     begin
      pA[j].A := pB[j];
      pA[j].B := (pA[j].B * pB[j]) shr 8;
      pA[j].G := (pA[j].G * pB[j]) shr 8;
      pA[j].R := (pA[j].R * pB[j]) shr 8;
     end;
   end;
  PNG.Free;
end;
применял так:
Код:
...
var
 BF:TBlendFunction;
 DC:HDC;
 bs:TSize;
 xySrc:TPoint;
begin

 Result:=false;

 with BF do
  begin
   BlendOp := AC_SRC_OVER;
   BlendFlags := 0;
   SourceConstantAlpha := 255;
   AlphaFormat := AC_SRC_ALPHA;
  end;

 DC:=GetDC(0);

 bs.cx:=bmp.Width;
 bs.cy:=bmp.Height;
 xySrc.X:=0;
 xySrc.Y:=0;
 Result:=UpdateLayeredWindow(Handle,DC,@xy,@bs,bmp.Canvas.Handle,
  @xySrc,clNone,@BF,ULW_ALPHA);

 ReleaseDC(0,DC);
Until The End Of Time
Showy вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прозрачность отдельных участков формы Романнн Общие вопросы Delphi 38 30.01.2010 20:04
прозрачность sergei64_89 Общие вопросы .NET 1 29.07.2008 21:43
Прозрачность Лубышев Помощь студентам 3 23.01.2008 00:05
Как задать прозрачность формы dimfil Общие вопросы Delphi 2 09.11.2007 09:53
Прозрачность ЧИЖ HTML и CSS 5 24.10.2007 17:18