На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Rouse_, jack128, Krid
  
    > GDI+ и ранжированная прозрачность (Alpha) , Для двух TBitmap
      ExpandedWrap disabled
        Var
          Matrix:TColorMatrix =
           ((1.0, 0.0, 0.0, 0.0, 0.0),
            (0.0, 1.0, 0.0, 0.0, 0.0),
            (0.0, 0.0, 1.0, 0.0, 0.0),
            (0.0, 0.0, 0.0, 0.4, 0.0),
            (0.0, 0.0, 0.0, 0.0, 1.0));
         
        Procedure AlphaDraw(AFrom,AAlpha,ATo:TBitmap;AWidth,AHeight,APercent:Integer);
        Var
          Graphics:GPGraphics;
          Bitmap:GPBitmap;
          Attributes:GPImageAttributes;
        Begin
          Matrix[3,3]:=APercent/100;
          GdipCreateFromHDC(ATo.Canvas.Handle,Graphics);
          GdipCreateBitmapFromHBITMAP(AFrom.Handle,AFrom.Palette,Bitmap);
          GdipDrawImageRectI(Graphics,Bitmap,0,0,AWidth,AHeight);
          GdipDisposeImage(Bitmap);
          GdipCreateBitmapFromHBITMAP(AAlpha.Handle,AAlpha.Palette,Bitmap);
          GdipCreateImageAttributes(Attributes);
          GdipSetImageAttributesColorMatrix(Attributes,ColorAdjustTypeBitmap,True,@Matrix,Nil,ColorMatrixFlagsDefault);
          GdipDrawImageRectRect(Graphics,Bitmap,0,0,AWidth,AHeight,0,0,AWidth,AHeight,UnitPixel,Attributes,Nil,Nil);
          GdipDisposeImageAttributes(Attributes);
          GdipDisposeImage(Bitmap);
          GdipDeleteGraphics(Graphics);
        End;

      Пример:
      ExpandedWrap disabled
        Image3.Canvas.FillRect(Image3.ClientRect); // Image3 не должен быть пустым
        AlphaDraw(Image1.Picture.Bitmap,Image2.Picture.Bitmap,Image3.Picture.Bitmap,128,128,50);

      Результат:
      в Image3 будет скопирован Image1, а поверх него с 50% прозрачностью Image2
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0237 ]   [ 17 queries used ]   [ Generated: 28.03.24, 08:36 GMT ]