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

Вниз

TPanel + WS_EX_Transparent + PNG = ...   Найти похожие ветки 

 
000001   (2007-07-06 22:55) [0]

Задача: накрыть некоторые элементы (TEdit, TLabel, TMemo, ...) прозрачной панелью, на которой размещен полупрозрачный PNG-рисунок.
Всё ок, в случае с TButton и TLabel, а вот в случае TEdit и TMemo - не получается, лезут они сверху прозрачной панели, сверху PNG-картинки.

Прозрачность панели реализуется так:

{ TPanel }

procedure TPanel.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := Params.ExStyle + WS_EX_Transparent;
end;

procedure TPanel.Paint;
var
 XBitMap: TBitMap;
 XOldDC: HDC;
 XRect: TRect;
begin

 if (csDesigning in ComponentState)
   then inherited Paint
 else begin
   XRect := ClientRect;
   XOldDC := Canvas.Handle;
   XBitMap := TBitMap.Create;
   try
     XBitMap.Height := Height; XBitMap.Width:=Width;
     Canvas.Handle := XBitMap.Canvas.Handle;
     inherited Paint;
     RedrawWindow(Parent.Handle, @XRect, 0,
                  RDW_ERASE or RDW_INVALIDATE or
                  RDW_NOCHILDREN or RDW_UPDATENOW);
   finally
     Canvas.Handle := XOldDC;
     Canvas.BrushCopy(XRect, XBitMap, XRect, Color);
     XBitMap.Free;
     end;
   end;
end;


Что посоветуете?


 
hommRO   (2007-07-06 23:01) [1]

> Что посоветуете?

Edit1.OnChange
Panel1.Invalidate;


 
000001   (2007-07-06 23:09) [2]

Посмотрел я CM_INVALIDATE, да срабатывает, хорошо, но получается интересно: прозрачность (и вообще прозрачность ли?) TImage начинает уменьшаться с каждым вызовом Invalidate. Т.е. что тут и от чего это происходит от моего прозрачного TPanel или от полупрозрачного PNG...по чему так? и что делать?


 
hommRO   (2007-07-06 23:14) [3]

> и что делать?

Вопрос по нармальному задать?


 
000001   (2007-07-06 23:24) [4]

Не знаю, как сказать. Делаю Panel.Invalidate, вся полупрозрачность от PNG теряется.


 
hommRO   (2007-07-07 00:13) [5]

Мое мнение ввобще на счет сабжа: для реализации этого в win32 уйдет сил не меньше, чем при реализации с нуля (собственной отрисовкой контролов, событий клавиатуры, но просто на одном окне. с WS_EX_Transparent вообще ничего хорошего никогда не получится.



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

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

Наверх




Память: 0.47 MB
Время: 0.03 c
3-1177429478
Juice
2007-04-24 19:44
2007.08.05
Засание при выполнении запроса в Oracle


2-1184057373
koha
2007-07-10 12:49
2007.08.05
Помогите разобраться с ошибкой


1-1180168895
Zagaevskiy
2007-05-26 12:41
2007.08.05
Как открыть CD-ROM?


11-1166730914
MTsv DN
2006-12-21 22:55
2007.08.05
Ошибка в FileSize


15-1184058736
SkySpeed
2007-07-10 13:12
2007.08.05
Есть ли смысл покупать 2-х ядерный проц? И почему?