AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Zitat:
Zitat:
Zitat:
Leider ist das Fenster so groß, dass ich nicht nur horizontal sondern auch vertikal scrollen müsste und dann die Bilder dementsprechend zusammensetzen muss |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Ich habe das mal so gemacht (vor Jahren), finde das aber leider nicht mehr.
Es wurde halt eine große bmp erstellt. |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Zitat:
könntest du auf dem Dachboden (oder Keller) nach dem Code suchen? :-) |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Ich hatte doch noch einen Tresor im Garten vergraben, den musste ich nur noch ausbuddeln und aufschweißen... ;-)
Musst Du mal schauen, ob Dich das auf den Weg bringen kann: - DesignerBoxTournament ist eine Scrollbox - Designer ist ein Panel in der Scrollbox, das den Kontent enthält (und der Gesamtgröße entspricht) - ImageCopy ist ein TImage
Delphi-Quellcode:
procedure TFormTurniere.sButtonCopyClick(Sender: TObject);
var DR, SR: TRect; X, Y: Integer; begin Beep; ImageCopy.Picture.Bitmap.Width := DesignerBoxTournament.Designer.Width; ImageCopy.Picture.Bitmap.Height := DesignerBoxTournament.Designer.Height; DR.Left := 0; DR.Top := 0; DR.Right := ImageCopy.Picture.Bitmap.Width; DR.Bottom := ImageCopy.Picture.Bitmap.Height; ImageCopy.Canvas.FillRect(DR); Y := 0; while Y < DesignerBoxTournament.Designer.Height do begin X := 0; while X < DesignerBoxTournament.Designer.Width do begin DesignerBoxTournament.HorzScrollBar.Position := X; DesignerBoxTournament.VertScrollBar.Position := Y; //ShowDummy(DesignerBoxTournament); // ... baute den Inhalt auf Application.ProcessMessages; Sleep(500); DR.Left := X; DR.Top := Y; DR.Right := X + DesignerBoxTournament.ClientWidth; DR.Bottom := Y + DesignerBoxTournament.ClientHeight; SR.Left := X; SR.Top := Y; SR.Right := X + DesignerBoxTournament.ClientWidth; SR.Bottom := Y + DesignerBoxTournament.ClientHeight; ImageCopy.Canvas.CopyRect(DR, DesignerBoxTournament.Designer.Canvas, SR); Inc(X, DesignerBoxTournament.ClientWidth); end; Inc(Y, DesignerBoxTournament.ClientHeight); end; ImageCopy.Picture.Bitmap.SaveToFile(Path + 'Copy.bmp'); end; |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Zitat:
Zitat:
bzw. auf mein Problem anzuwenden. |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Muss man zu dieser Zeile noch etwas wissen?
Delphi-Quellcode:
Ein Panel (Designer) hat doch kein Canvas oder hab ich was übersehen?
ImageCopy.Canvas.CopyRect(DR, DesignerBoxTournament.Designer.Canvas, SR);
|
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Den Canvas hatte ich (glaube ich) extra veröffentlicht.
Du müsstest evtl. auch den Canvas der Scrollbox oder des Formulars nehmen können. Genauer kann ich das schlecht nachvollziehen weil meine Aktivitäten dazu schon länger her sind. |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
Im Grunde genommen hab ich deinen Code verstanden.
Wenn ich das nun auf mein eigentliches Problem ummünze dann hab ich aber ein anderes Problem. Dein Code weiss von Anfang an, wie groß das Ursprüngliche ist und scrollt dann über X und Y an die Endposition hin. Wenn ich aber einen ScreenShot des fremden Fensters machen will, weiss ich nicht, wie groß das Gesamte ist. Ich müsste also wissen, wie weit ich scrollen muss. - Ich finde aber nichts um rauszufinden, ob die Scrollbalken angezeigt werden, oder wie weit ich scrollen muss. Wenn ich das wüsste, dann könnt ich deinen Code darauf anwenden. |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
zwei Möglichkeiten:
1) Scrolle einfach immer weiter und teste, wie weit Position tatsächlich verschoben wurde. Die Differnz zur letzten Position ist dann der neue Bereich. 2) Schau Dir mal die Eigenschaften der Scrollbars an. Die wissen auf jeden Fall, wie groß die Bereiche in X- und Y-Richtung sind (irgendwas miz Range oder so). |
AW: ScreenShot eines Fensters machen dessen Inhalt größer Formgröße ist
mmh - aber wie bekomm ich die Position raus?
Ich bin ja in einem fremden Fenster |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 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