Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

UpdateLayeredWindow   Найти похожие ветки 

 
Dmitry S ©   (2008-02-03 18:07) [0]

Объясните, пожалуйста, по-русски и популярно, что делает subj-овая функция.


 
DVM ©   (2008-02-03 18:10) [1]

говорит Windows, что это окно будет само отвечать за свою отрисовку, этому окну перестают приходить сообщения WM_PAINT и далее окно само должно вызывать указанную функцию для своего обновления, передавая ей готовое изображение.


 
DVM ©   (2008-02-03 18:12) [2]

Вот, не совсем я тут согласен, но вполне понятно описано:

http://forum.vingrad.ru/forum/topic-54390.html


 
Dmitry S ©   (2008-02-04 04:35) [3]

Кстати везде пишут, что с Alpha каналом BMPшки не загружаются с помощью API шных функций. У меня легко открылась. Или это только в XP работает?


 
ketmar ©   (2008-02-04 11:52) [4]

>[3] Dmitry S ©(04.02.08 04:35)
загружаются. но без GDI+ и DirectX их нельзя блиттить с альфой. это в виду и имеют. т.е. канал — он есть, а толку с него нет.


 
ketmar ©   (2008-02-04 11:53) [5]

ну, то есть, нельзя блитить стандартными bitblt сотоварищи, я имел в виду.


 
guav ©   (2008-02-04 11:59) [6]

но можно билтить стандартной AlphaBlend.


 
ketmar ©   (2008-02-04 12:07) [7]

>[6] guav ©(04.02.08 11:59)
но в NT нет AlphaBlend.


 
Ins ©   (2008-02-04 12:08) [8]


> но можно билтить стандартной AlphaBlend.


Угу. Пример - здесь:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=46659


 
guav ©   (2008-02-04 12:16) [9]

> [7] ketmar ©   (04.02.08 12:07)
> но в NT нет

В NT сабжевой функции тоже нет, и что ?
Ещё Windows 95 вспомним, ага ?


 
Dmitry S ©   (2008-02-04 12:21) [10]


> ketmar ©   (04.02.08 11:53) [5]


> procedure bmpAlphaPremulti(Bmp:HBITMAP);
> var
>   BmpInfo:Windows.TBitmap;
>   Point: PRGBQuad;
>   I:Integer;
> begin
>   GetObject(Bmp, SizeOf(BmpInfo), @BmpInfo);
>   Point := BmpInfo.bmBits;
>   for i:=0 to pred(BmpInfo.bmWidth * BmpInfo.bmHeight) do
>   begin
>     Point^.rgbBlue := MulDiv(Point^.rgbBlue, Point^.rgbReserved,
>  255);
>     Point^.rgbGreen := MulDiv(Point^.rgbGreen, Point^.rgbReserved,
>  255);
>     Point^.rgbRed := MulDiv(Point^.rgbRed, Point^.rgbReserved,
>  255);
>     inc(Point);
>   end;
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
>   Bmp: HBITMAP;
>   SurfaceDC, BmpDC: HDC;
>   BmpInfo:Windows.TBitmap;
>   BlendFunction: TBlendFunction;
> begin
>   Bmp := LoadImage(
>             HInstance,
>             "src.bmp",
>             IMAGE_BITMAP,
>             0,
>             0,
>             LR_CREATEDIBSECTION
>               or LR_DEFAULTSIZE
>               or LR_LOADFROMFILE
>             );
>
>   SurfaceDC := GetDC(Handle);
>   BmpDC := CreateCompatibleDC(SurfaceDC);
>
>   SelectObject(BmpDC, Bmp);
>
>   bmpAlphaPremulti(Bmp);
>
>   GetObject(Bmp, SizeOf(BmpInfo), @BmpInfo);
>
>   BlendFunction.BlendOp := AC_SRC_OVER;
>   BlendFunction.BlendFlags := 0;
>   BlendFunction.SourceConstantAlpha := 255;
>   BlendFunction.AlphaFormat := AC_SRC_ALPHA;
>
>   Windows.AlphaBlend(
>     SurfaceDC, 0, 0, BmpInfo.bmWidth, BmpInfo.bmHeight,
>     BmpDC, 0, 0, BmpInfo.bmWidth, BmpInfo.bmHeight,
>     BlendFunction
>   );
>
> end;


Если сильно хочешь, могу тоже самое сделать без AlphaBlend :)


 
Dmitry S ©   (2008-02-04 12:23) [11]

Упс, не ту кнопочку нажал:)

А, кстати, как AlphaBlend работает?
Копирует DestinationDC, потом на копию рисует SourceDC, а затем эту копию снова рисует на DestinationDC, или как?


 
ketmar ©   (2008-02-04 13:03) [12]

>[10] Dmitry S ©(04.02.08 12:21)
я тоже могу. ну и что?


 
Dmitry S ©   (2008-02-04 13:05) [13]

А то, что проблема надуманная :)



Страницы: 1 вся ветка

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1201861717
barakuda
2008-02-01 13:28
2008.03.09
меню с большими иконками 32*32...


2-1202755883
1иван
2008-02-11 21:51
2008.03.09
TMemoryStream + dll


2-1202823087
Fanbio
2008-02-12 16:31
2008.03.09
записать 6 байтное число


15-1201765184
Ega23
2008-01-31 10:39
2008.03.09
Дурной вопрос про QueryAnalyzer


2-1202983389
oleg_teacher
2008-02-14 13:03
2008.03.09
Компонент ListBox