AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild vom Fenster

Ein Thema von daniel8520 · begonnen am 7. Mai 2004 · letzter Beitrag vom 8. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
daniel8520
(Gast)

n/a Beiträge
 
#1

Bild vom Fenster

  Alt 7. Mai 2004, 20:13
Hallo,

also ich wollte gern ein Bild von meinem eigenen Prog machen, aus dem Programm heraus.
Nur soll dass nicht über die Kombination ALT+Print, sondern über einen Button o.ä. funktionieren.
Also kurz:
ich möchte in meinem Programm ein Bild von selbigem machen.

Ich hab nun die Code-Lib durchsucht, aber nur funktionen gefunden, bei denen der ganze Bildschirm "fotografiert" wird. Ich muss aber ein Bild vom Prog - nur vom Prog - haben.

Kann mir da jemand weiterhelfen?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:25
funktioniert eignetlich genau so wie ein bild vom gesamten Bildschirm.
Du holst dir das Handle auf die Canvas vom Desktop und kopierst dann nur den Bereich wo dein Programm liegt..
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#3

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:26
mach doch:

erst screenshoot, dann ausschneiden

du kannst doch als eckpunkte die nehmen:

links oben:___(_Form1.Left_______________|_Form1.Top_)
rechts oben:__(_Form1.Left_+_Form1.width_|_Form1.Top_)
links unten:__(_Form1.Left_______________|_Form1.Top_+_F orm1.heigth )
rechts unten:_(_Form1.Left_+_Form1.width_|_Form1.Top_+_Fo rm1.heigth )

kann dir leider nur nen tipp geben, da ich mit aus ner bitmap ausschneiden und so selber nit kann

von daher, das musst du dann machen

ich hoffe das hilft trotzdem

[Edit]Sch*** Leerzeichen-Killer[/Edit]
[Edit]Sch*** Leerzeichen-Killer, nochmal[/Edit]
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:33
Hallo,
es funktioniert so:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  WindowDC : HDC;
  _Canvas : TCanvas;
begin
  Image1.Picture.Bitmap.Width:=Width;
  Image1.Picture.Bitmap.Height:=Height;
  WindowDC := GetWindowDC(Handle);
  _Canvas:=TCanvas.Create;
  Try
    _Canvas.Handle:=WindowDC;
    BitBlt(Image1.Picture.Bitmap.Canvas.Handle,0,0,Width,Height,_Canvas.Handle,0,0,SRCCOPY);
  Finally
    _Canvas.Free;
    ReleaseDC(Handle,WindowDC);
    end;
end;

end.
Wenn Du nur den Clientbereich des Fensters brauchst reicht ein einfaches PaintTo.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:34
Hi,

Hier findest du einige Möglichkeiten:
http://www.swissdelphicenter.ch/de/showcode.php?id=259
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:35
So sollte es gehen (ging bei mir)
Delphi-Quellcode:
var Lhwnd: HWND;
    LCanvas: TCanvas;
    LDest: Tbitmap;
begin
  LDest := TBitmap.Create;
  LDest.Width := width;
  LDest.Height := Height;
  Lhwnd := GetWindowDC(GetDesktopWindow);
  LCanvas := TCanvas.Create;
  LCanvas.Handle := Lhwnd;
  BitBlt(Ldest.Canvas.Handle, 0, 0, width, height, LCanvas.Handle, left, top, SRCCOPY);
  Image1.Picture.Assign(LDest);
  LCanvas.Free;
  ReleaseDC(GetDesktopWindow, Lhwnd);
  LDest.Free;
end;
@Jens Schumann: War wohl bissl zu langsam, allerdings hast du nen Fehler drin. Du hast die Left,Top Position bei BitBlt nicht angegeben bzw. vorrausgesetzt das sich das fenster bei pixel Point(0,0) befindet
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
daniel8520
(Gast)

n/a Beiträge
 
#7

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:37
Danke für eure Hilfe,

ich kann euch ja mal sagen, was ich vorhatte:
ich wollte eigentlihc nur ein StringGrid ausdrucken. Aber das scheint ja nicht ganz so einfach zu sein. Also dachte ich mir, machste n' Form mit bsNone und der Gridgröße, und lässt das ausdrucken, soweit sogut. Nur, die Schriftqualität im Grid ist, naja sagen wir mal nicht wirklich schön. Dann dachte ich daran, ein Bild vom Form zu machen. Hab dann gepostet, und während ich gewartet hab, hab ich selbst mal ein Bild mit der Taste "Print Screen" gemacht, und das dann ausgedruckt. Sieht aber noch dümmer aus! Ich hab dann noch ne andere Schrift im Grid genommen. Hat aber alles nichts geholfen.
Naja, muss ich mir wohl noch was anderes einfallen lassen.
Oder mir ne function über den Druck von nem Grid besorgen, aber das ist dann ja wohl OT!

Trotzdem danke für euren Einsatz!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:49
Zitat von SirThornberry:
So sollte es gehen (ging bei mir)

@Jens Schumann: War wohl bissl zu langsam, allerdings hast du nen Fehler drin. Du hast die Left,Top Position bei BitBlt nicht angegeben bzw. vorrausgesetzt das sich das fenster bei pixel Point(0,0) befindet
Ich denke das ist nicht der Fehler. Ich habe einen anderen entdeckt.
Wenn ich mehrmals auf den Button klicke werden die Fenster immer kleiner (ich Stretch auf True).
Der Effekt tritt mit Deinem Code auch auf.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Sebastian Nintemann
(Gast)

n/a Beiträge
 
#9

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:55
@SirThornberry:

Delphi-Quellcode:
LCanvas := TCanvas.Create;
  LCanvas.Handle := Lhwnd;
  BitBlt(Ldest.Canvas.Handle, 0, 0, width, height, LCanvas.Handle, left, top, SRCCOPY);
  Image1.Picture.Assign(LDest);
  LCanvas.Free;
Wieso erstellst du denn ein Canvas (LCanvas), welches du garnicht benötigst? Das einzige mal wo LCanvas auftaucht ist im BitBlt als LCanvas.Handle, aber da könntest du doch gleich Lhwnd nehmen.

Viele Grüße, Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Bild vom Fenster

  Alt 7. Mai 2004, 20:58
Zitat von Grotesquery:

Wieso erstellst du denn ein Canvas (LCanvas), welches du garnicht benötigst? Das einzige mal wo LCanvas auftaucht ist im BitBlt als LCanvas.Handle, aber da könntest du doch gleich Lhwnd nehmen.
Habe ich auch schon bemerkt. Habe den gleichen Lapsus.
I come from outer space to save the human race
  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 15:08 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