Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Вниз

Как сделать компонент image1 на форме полупрозрачным   Найти похожие ветки 

 
Don   (2009-11-01 19:53) [0]

Здравствуйте. Где-то читал, что можно с помощью свойства альфабленд сделать прозрачным даже Image1 на форме, но небыло указано как.

Function SetLayeredWindowAttributes(hwnd: HWND; crKey: COLORREF; bAlpha:
byte; dwFlags: dword):bool; stdcall; external "USER32.DLL";

procedure TForm1.SetBlend(AlphaBlend:byte; wnd:hwnd);
var old: longint;
begin
 old:=GetWindowLongA(wnd,GWL_EXSTYLE);
 SetWindowLongA(wnd,GWL_EXSTYLE,old or $80000);
 SetLayeredWindowAttributes(wnd, 0, AlphaBlend, $2);
end;

SetBlend(100, image1.canvas.handle);

Это пример к сожалению не дает положительного результата. Может кто подскажет в чем причина, и как ее исправить. Буду очень благодарен.


 
Юрий Зотов ©   (2009-11-01 20:14) [1]

Сanvas.handle - это не тот хэндл. Здесь нужен хэндл окна, а у TImage никакого окна нет, так что все эти упражнения с Alpha заведомо бесполезны.

Все намного проще - у TImage есть свойство Transparent.


 
Омлет.   (2009-11-02 00:12) [2]

> Юрий Зотов

Transparant - это полная прозрачность для какого-то одного цвета.
По теме - нужно вручную делать отрисовку с нужной прозрачностью. И для этого лучше использовать PaintBox и временный Bitmap, как минимум.


 
Don   (2009-11-04 15:03) [3]

Вот кому интерестно нашел ришение:

procedure TForm1.Button1Click(Sender: TObject);
var
 bmp:TBitmap;
 bf:BLENDFUNCTION;
begin
bmp:=TBitmap.Create;
try
 bmp.LoadFromFile("1.bmp");

 bf.BlendOp:=AC_SRC_OVER;
 bf.BlendFlags:=0;
 bf.SourceConstantAlpha:=100;//величина прозрачности (0-255)
 bf.AlphaFormat:=0;
 Windows.AlphaBlend(Image1.Canvas.Handle, 0, 0, Image1.ClientWidth, Image1.ClientHeight,
                     bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, bf);
finally
 bmp.Free;
end;
end;

Всем благодарен за ответы, всех благ, всего наилутшего.


 
antonn ©   (2009-11-04 19:03) [4]

аналог альфабленда, в той теме где уже бывал автор http://delphimaster.net/view/8-1253597355/



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

Форум: "Начинающим";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1256049315
NERO
2009-10-20 18:35
2009.12.20
передавать или создавать заново


11-1163789456
SKA1997
2006-11-17 21:50
2009.12.20
Форма прозрачная для кликов


2-1257431830
kyn66
2009-11-05 17:37
2009.12.20
Развернуть свернутую в трэй форму


2-1257078091
kesha
2009-11-01 15:21
2009.12.20
Оптимальный метод передачи значения компонента процедуре


2-1257311762
uMain
2009-11-04 08:16
2009.12.20
Мультиязычность





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский