Конференция "Основная" » Копирование экрана [D5, D7, WinXP]
 
  • Asker (10.12.07 19:55) [0]
    Подскажите почему код описанный тут:
    http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=16-988625471
    дает на одних компах черный прямоугольник, а на других нормально работает??
  • Palladin © (10.12.07 20:10) [1]
    объяснять не хочу, потому что по ссылке все слишком жестоко деформатировано...

    type
     TDesktopCanvas = class(TCanvas)
     private
       DC : hDC;
       function     GetWidth:Integer;
       function     GetHeight:Integer;
     public
       constructor  Create;
       destructor   Destroy; override;
     published
       property Width: Integer read GetWidth;
       property Height: Integer read GetHeight;
     end;

    function TDesktopCanvas.GetWidth:Integer;
    begin
     Result:=GetDeviceCaps(Handle,HORZRES);
    end;

    function TDesktopCanvas.GetHeight:Integer;
    begin
     Result:=GetDeviceCaps(Handle,VERTRES);
    end;

    constructor TDesktopCanvas.Create;
    begin
     inherited Create;
     DC := GetDC(GetDesktopWindow);
     Handle := DC;
    end;

    destructor TDesktopCanvas.Destroy;
    begin
     ReleaseDC(Handle, DC);
     inherited Destroy;
    end;

    Procedure SaveScreen(Const p_strFileName:String);
    Var
     d:TDesktop
     b:TBitmap;
    Begin
     b:=TBitmap.Create;
     d:=TDesktopCanvas.Create(Nil);
     b.Width:=d.Width;
     b.Height:=d.Height;
     d.CopyRect(Rect(0,0,d.Width,d.Height),b.Canvas,Rect(0,0,d.Width,d.Height));
     d.Free;
     b.SaveToFile(p_strFileName);
     b.Free;
    End;


  • имя (31.01.08 14:36) [2]
    Удалено модератором
  • Style © (01.02.08 16:54) [3]
    А по ссылке не работает возможно потому, что палитры в том режиме,в котором работает ОС , просто нет. 32 бита на цвет.

    а функция
    function CaptureScreenRect(ARect : TRect) : TBitmap;
    копирует экран нормально,

    только вот потом
    Palette:=GetSystemPalette;
    палитра сбрасывается в 0, и получается черный квадрат.
 
Конференция "Основная" » Копирование экрана [D5, D7, WinXP]
Есть новые Нет новых   [134482   +35][b:0][p:0.001]