AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [gelöst] Button, Groupbox etc. fotografieren/Screenshoot
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Button, Groupbox etc. fotografieren/Screenshoot

Ein Thema von Go2EITS · begonnen am 6. Jul 2006 · letzter Beitrag vom 7. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

[gelöst] Button, Groupbox etc. fotografieren/Screenshoot

  Alt 6. Jul 2006, 10:01
Hallo,

ich habe in der DP ein Code für das Erstellen von Programm-Screenshoots gefunden und
ein JPG erstellt. Es funktioniert prima und habe es abgeändert in mein aktuelles Projekt
WinClean (erst ab version 1.0.3) eingebaut. DP lohnt sich!

Hat jemand eine Ahnung wie ich Buttons, Groupboxen "fotografieren" kann und diese
in meine Hilfe dann einzubauen? Klar, mit diversen Progs geht es ja, aber ein wenig
mühsam, weil man jedes Button etc. den Screenshoot mit der Hand "zuschneiden" muss.
Vielleicht hat ja jemand ein
BUTTON1.SHOT:='C:\button1.bmp' oder shoot.Button1:='C:\button1.jpg' im Ärmel?

Danke für die Unterstützung!

GO2EITS
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#2

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 15:12
Hallo,

du willst von einen einzelnen Button eines Programms einen Screenshoot machen? -
Ich glaube nicht das das möglich ist....
wenn schon, dann würde mich es auch interessieren.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 15:16
Kann man nicht an jedes TWinControl (= Window) eine Message schicken, dass es sich auf einen bestimmten Bereich zeichnen soll?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#4

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 15:24
Stimmt! Da gibts doch z.B.
Button1.PaintTo()
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 15:26
Geht genauso wie ein normaler Screenshot, nur dass du nicht den DC des Bildschirms in das Bitmap kopierst, sondern eben nur den DC des Controls. Dazu holst du dir das Handle des Controls mit FinWindow, FindWindowEx oder EnumWindows, EnumChildWindows und dann ganz normal mit MSDN-Library durchsuchenGetDC den DC holen. Das geht natürlich nur mit Windows Fensterklassen, die auch ein Handle besitzen. reine VCL Steuerelemnet wie TLabel besitzen kein Handle und da geht das nicht.

@droppi: Und wie machst du das in einem fremden Programm?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#6

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 15:31
Er hat ja geschrieben, dass er die Screenshots von seinem Programm machen will. Aber hast natürlich Recht. Von fremden Programmen geht das nicht so.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#7

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 18:03
Hallo, vielen Dank für Eure Beiträge.

Button1.paintto() benötigt x,y Koordinaten. Da finde ich kein Button1.Save.to. oder so.

Ich meine aber den Screenshot z. B. meines Button1 in meinem Programm, da ich
den bmp oder jpg vom Button1 dann in meine Hilfe kopiere.

Es wird nicht der Button eines anderen Programmes benötigt.

Wird schwierig, oder?
GO2EITS
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#8

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 18:10
Also wenn du den Screenshot nur von deinem Programm brauchst, würde ich es so machen.
Ich kreiere mir im Hintergrund ein Bitmap. Das Bitmap hat ein Canvas. Haben wir schonmal den ersten Parameter. X und Y sind die Koordinaten wo der Button auf das Bitmap gezeichnet wird. Dann kannst du das Bitmap speichern.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#9

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 18:35
@Droppi
Da komme ich nicht ganz mit. Ist es da nicht leichter ein Screenshoot Progamm zu nehmen?
Ich habe eine Image so groß wie ein Button auf die Form geklatscht und ein Button
drübergelegt und mit image1.save.to:='C:\image.tmp' oder so ähnlich, hab es schon gelöscht, versucht
die Image zu speichern. NIX passierte. Der Profi wird lachen. Ich gleich mit, weil ich ahnte,
das dies nicht funktioniert.


Spass beiseite:
Hier habe ich mal ne Prozedur aus der DP:
http://www.delphipraxis.net/internal...ght=image+save
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var DCDesk: HDC; // hDC of Desktop
  bmp: TBitmap;
begin
  {Create a bitmap}
  bmp := TBitmap.Create;

  {Set a bitmap sizes} 
  bmp.Height := Screen.Height;
  bmp.Width := Screen.Width;

  {Get a desktop DC handle - handle of a display device context}
  DCDesk := GetWindowDC(GetDesktopWindow);

  {Copy to any canvas, here canvas of an image}
  BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
         DCDesk, 0, 0, SRCCOPY);

  {Save the bitmap}
  bmp.SaveToFile('C:\ScreenShot.bmp');

  {Release desktop DC handle} 
  ReleaseDC(GetDesktopWindow, DCDesk);

  {Release a bitmap}
  bmp.Free;
end;
Klappt Super. Aber nur für den ganzen Screen.

So. [Bin Anfänger, Vorsicht!]
Wie kann ich mit bitBlt ein Button eine Groupbox etc. die angezeigt wird, kopieren.
Das Konverten als jpg funktioniert bei mir schon.
  Mit Zitat antworten Zitat
droppi
(Gast)

n/a Beiträge
 
#10

Re: Button, Groupbox etc. fotografieren bez. Screenshoot

  Alt 6. Jul 2006, 18:44
Also beim Button geht das bei mir so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var bit:tbitmap;
begin
bit:=tbitmap.Create;
bit.Width:=button1.Width;
bit.Height:=button1.Height;
button1.PaintTo(bit.Canvas,0,0);
bit.SaveToFile('c:\test.bmp');
end;
Analog dazu die Groupbox. Auch mit Paintto. Du musst halt nur die Größe des Bitmaps festlegen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz