Главная страница
    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.004 c
15-1256122591
oldman
2009-10-21 14:56
2009.12.20
Сегодня 91 год Александу Аркадьевичу Гинзбургу


2-1257213337
sideX
2009-11-03 04:55
2009.12.20
2 вопроса по TWebBrowser


3-1231735370
S_p_a_w_n
2009-01-12 07:42
2009.12.20
Ограничение даты


2-1257157125
Rendal
2009-11-02 13:18
2009.12.20
Удаление ключа из реестра


15-1256145675
palva
2009-10-21 21:21
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский