有没有人做过:把一幅图显示在一个圆形(或其形状)的区域?

解决方案 »

  1.   

    当然可以,用Windows API来写,看看这个例子。procedure TForm1.Button1Click(Sender: TObject);
    var
      bmp: TBitmap;
      rgn: HRGN;
    begin
      bmp := TBitmap.Create;
      try
        bmp.LoadFromFile('somebmp.bmp');  // 你想显示的图片    rgn := CreateEllipticRgn(10,10,200,200);
        if rgn <> 0 then begin
          try
            SelectObject(Canvas.Handle, rgn);
            Canvas.Draw(0,0,bmp);
          finally
            DeleteObject(rgn);
          end;
        end;
      finally
        bmp.Free;
      end;
    end;
      

  2.   


    procedure Tmainform.FormPaint(Sender: TObject);
      VAR
      Y:INTEGER;
      FORMRGN:HRGN;
    begin
        FORMRGN:=CreateEllipticRgn(20,20,500,380);//用其他形状采用其他函数
        SETWINDOWRGN(HANDLE,FORMRGN,TRUE);
        FOR Y:=0 TO CLIENTHEIGHT DO
        BEGIN
            CANVAS.Brush.Color:=$100*Y;
            CANVAS.FillRect(RECT(0,Y-1,CLIENTWIDTH-1,Y));
        END;
    end;