Вниз
Скачать: CL | DM;

Как сделать компонент 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.007 c
4-1225617182
Skazi21101
2008-11-02 12:13
2009.12.20
Работа с COM портом. Помогите.


15-1256203947
Putnik
2009-10-22 13:32
2009.12.20
Помогите выбрать видеокарту


15-1255934035
AlexDan
2009-10-19 10:33
2009.12.20
Программисты Европы будут отвечать за свои ошибки


2-1256907604
HRustBB
2009-10-30 16:00
2009.12.20
Как сделать чтобы функция возвращала массив


1-1229699110
Cobalt
2008-12-19 18:05
2009.12.20
Destroy в интерфейсе не вызывается?




   Наверх