Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ScreenShot
#1
Merhaba;

Uyulamaya ScreenShot ekleme istiyorum. fakat çözemediğim sorunlarla karşı karşıya kaldım.
Konu hakkında bilgisi olan arkadaşlar yardımlarınızı rica ederim.


error E2003: E2003 Undeclared identifier: 'Create'
error E2003: E2003 Undeclared identifier: 'Height'
error E2003: E2003 Undeclared identifier: 'Width'
error E2003: E2003 Undeclared identifier: 'Canvas'
error E2014: E2014 Statement expected, but expression of type 'TWindowHandle' found


procedure TForm1.LogScreenShot(Sender: TObject);
var
  DCDesk: HDC; // hDC of Desktop
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  bmp.Height := Screen.Height;
  bmp.Width := Screen.Width;
  DCDesk := GetWindowDC(GetDesktopWindow);
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DCDesk, 0, 0, SRCCOPY);
 bmp.SaveToFile('ScreenShot.bmp');
  ReleaseDC(GetDesktopWindow, DCDesk);
   bmp.Free;
end;
Cevapla
#2
Merhaba,
Muhtemelen copy-paste kaynaklı bir sorun gibi görünüyor.  Smile
Kullandığınız sınıf ve tipler sanırım VCL tabanlı olduğu için FMX mimarisinde çalışmaması oldukça doğal.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(27-05-2019, Saat: 12:48)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Muhtemelen copy-paste kaynaklı bir sorun gibi görünüyor.  Smile
Kullandığınız sınıf ve tipler sanırım VCL tabanlı olduğu için FMX mimarisinde çalışmaması oldukça doğal.


Big Grin  Haklısınız ama FMX için kod örneği bulamadım.

uses 

Vcl.Graphics;
Cevapla
#4
Ben buldum. TControl.Makescreenshot. Smile
Yada farklı bir yöntemle yapmak isterseniz; örnek bir çalışma yapılmış.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Actionliste MediaLibrary kategorisinde bir action ekleyip paylaş buttonu koymuştum ekrandaki componentin resmini çekip paylaştırıyordum. kaydet dediğinizde jpg olarak kaydediyor zaten.

Aşağıdaki kod size fikir verecektir.

ShowShareSheetAction1.Bitmap.Assign(ListView1.MakeScreenshot);


En iyi yol yukarıdaki yoldu fakat bu işinizi bir şekilde görmezse Aşağıdaki kod bloğunu kullanabilirsiniz.


function MakeScaleScreenshot(Sender:TControl): TBitmap;
var
 fScreenScale: Single;
 function GetScreenScale: Single;
 var
   ScreenService: IFMXScreenService;
 begin
   Result := 1;
   if TPlatformServices.Current.SupportsPlatformService (IFMXScreenService, IInterface(ScreenService)) then
   begin
     Result := ScreenService.GetScreenScale;
   end;
 end;
begin
 fScreenScale := GetScreenScale;
 Result := TBitmap.Create(Round(Sender.Width*fScreenScale), Round(Sender.Height*fScreenScale));
 Result.Clear(0);
 if Result.Canvas.BeginScene then
 try
   Sender.PaintTo(Result.Canvas, RectF(0,0,Result.Width,Result.Height));
 finally
   Result.Canvas.EndScene;
 end;
end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Video Screenshot sorunu codder71 5 1.105 25-01-2018, Saat: 01:46
Son Yorum: codder71



Konuyu Okuyanlar: 1 Ziyaretçi