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

Вниз

Выделение прозрачным прямоугольником   Найти похожие ветки 

 
ANTPro ©   (2007-10-15 17:23) [0]

Как это реализованно в проводнике?


 
Palladin ©   (2007-10-15 17:54) [1]

да, в общем то, как всегда... DragStart, MouseMove


 
Lacmus ©   (2007-10-15 18:11) [2]

>ANTPro ©   (15.10.07 17:23)  

AlphaBlend ?

http://msdn2.microsoft.com/en-us/library/ms532324.aspx


 
ANTPro ©   (2007-10-15 19:15) [3]

> [1] Palladin ©   (15.10.07 17:54)

Это ясно :)


> [2] Lacmus ©   (15.10.07 18:11)

Спасибо. Осталось разобраться, как ей пользоваться.

procedure offtop;
begin
 Что зашифровали маньяки из M$ по ссылке? Целых 10кб чего-то непонятного :(
end;


 
Lacmus ©   (2007-10-15 20:03) [4]

Пример использования



unit Unit75;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, ComCtrls, ShellCtrls;

type
 TShellListViewEx = class(TShellListView)
   procedure WMPaint(var aMessage: TMessage); message WM_PAINT;
 end;

 TShellListView = class(TShellListViewEx);

 TForm75 = class(TForm)
   ShellListView1: TShellListView;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form75: TForm75;

implementation

{$R *.dfm}

function AlphaBlend(hdcDest: HDC; nXOriginDest, nYOriginDest, nWidthDest,
 nHeightDest: Integer; hdcSrc: HDC; nXOriginSrc, nYOriginSrc, nWidthSrc,
 nHeightSrc: Integer; BlendFunction: BLENDFUNCTION): BOOL; stdcall; external "Msimg32.dll";

{ GR32_LowLevel.pas }

procedure FillLongword(var X; Count: Integer; Value: Longword);
asm
// EAX = X
// EDX = Count
// ECX = Value
       PUSH    EDI

       MOV     EDI,EAX  // Point EDI to destination
       MOV     EAX,ECX
       MOV     ECX,EDX
       TEST    ECX,ECX
       JS      @exit

       REP     STOSD    // Fill count dwords
@exit:
       POP     EDI
end;

procedure TShellListViewEx.WMPaint(var aMessage: TMessage);
var
 Bitmap: TBitmap;
 BlendFunction: TBlendFunction;
begin
 inherited;

 Bitmap := TBitmap.Create;
 try
   Bitmap.PixelFormat := pf32Bit;
   Bitmap.SetSize(200, 100);

   FillLongword(Bitmap.ScanLine[Bitmap.Height - 1]^, Bitmap.Width * Bitmap.Height, $FFFF0000);
//    FillLongword(Bitmap.ScanLine[0]^, Bitmap.Width * Bitmap.Height, $FFFF0000);

   BlendFunction.BlendOp := AC_SRC_OVER;
   BlendFunction.BlendFlags := 0;
   BlendFunction.SourceConstantAlpha := 100;
   BlendFunction.AlphaFormat := AC_SRC_ALPHA;
   Unit75.AlphaBlend(Canvas.Handle, 50, 50, Bitmap.Width, Bitmap.Height,
      Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, BlendFunction)
 finally
   Bitmap.Free
 end
end;

end.




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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
15-1191914448
mefodiy
2007-10-09 11:20
2007.11.11
Зависание при работе BDE в ноутбуке HP с Vista Home Premium


15-1191309571
Ega23
2007-10-02 11:19
2007.11.11
Задачник посоветуйте


2-1192506624
dmdel
2007-10-16 07:50
2007.11.11
Закрасить пиксель


3-1183576692
lavrenty
2007-07-04 23:18
2007.11.11
Не срабатывает Refresh


5-1162820306
mmms
2006-11-06 16:38
2007.11.11
Возможны ли такой виз. компонент?