![]() |
PagePicker
Hallo,
ich würde gerne einen "PagePicker", wie er im neuen iOS7 bei Safari zu sehen ist, in Windows als Komponente programmieren. Funktioniert soweit schon ganz gut, aber leider nur mit selbst gezeichneten oder sonstigen Bitmaps (eine Bitmap je dargestellte Seite). Gibt es eine Möglichkeit, Delphi-Komponenten, so wie sie auf dem Bildschirm zu sehen sind, in eine Bitmap zu stanzen? z.B. ein TGrid mit TMemo und TButton. Eine Kopie mit BitBlt schlägt fehl, da die Handle der Komponenten keine Handle auf Canvas sind. Oder gehts auch anders? Und sofort weiter: Wenn möglich, gibt es eine Möglichkeit noch nicht auf dem Bildschirm gezeichnete Komponenten irgendwie in eine Bitmap zeichnen zu lassen? Was natürlich geht, ist über die Koordinaten den entsprechenden Bildschirmausschnitt zu kopieren. Aber wehe, es liegt ein Fenster ganz oder teilweise darüber, oder eine darzustellende Seite wurde noch nie auf dem Bildschirm angezeigt. Wenn das alles funktioniert hat man quasi einen sehr funktionellen und gut aussehenden PageControl oder auch allgemeinen SeitenPicker mit angenehmer Navigation. Liebe Grüße aus Bochum Peter |
AW: PagePicker
Hallo -
Kannst du vielleicht ein Bild anhängen damit jeder sehen kann, was gemeint ist? |
AW: PagePicker
Im iPhone Safari aufrufen, und die PageListe ansehen. Aber das ist für das Problem ohne Belang.
Hier die Kurzfassung: Wie bekomme ich eine Komponente oder auch Form, so wie sie auf dem Bildschirm aussieht, in eine Bitmap? Liebe Grüße |
AW: PagePicker
Hast Du schon
![]() |
AW: PagePicker
Hallo,
GetFormImage kannte ich in der Tat nicht. Nun, damit bekommt man die gesamte Form, leider aber ohne Windows-Rahmen, in eine Bitmap. Gehts nun auch irgendwie mit Komponenten innerhalb einer Form? Liebe Grüße aus Bochum |
AW: PagePicker
Wie wär's damit:
Delphi-Quellcode:
Img_Kopie ist ein TImage, das zum Testen auf der Form liegt ... Du kannst auch gleich den Dateinamen mitgeben und das Bitmap abspeichern. Und für einzelne Komponenten machst du das dann ebenso, natürlich mit entsprechender Umrechnung der Koordinaten, die sich bei Komponenten ja auf das jeweilige Parent beziehen.
procedure TForm1.AppFormKopieren;
Var Bitmap: TBitmap; Canvas: TCanvas; begin Canvas := TCanvas.Create; Try Canvas.Handle := GetWindowDC(0); Try Bitmap := TBitmap.Create; Bitmap.Width := Self.Width; Bitmap.Height := Self.Height; Bitmap.PixelFormat := pfDevice; BitBlt(Bitmap.Canvas.Handle, 0, 0, Self.Width, Self.Height, Canvas.Handle, Self.Left, Self.Top, Bitmap.Canvas.CopyMode); Img_Kopie.Picture.Bitmap.Assign(BitMap); Finally BitMap.Free; End; Finally ReleaseDC(0, Canvas.Handle); Canvas.Free; End; end; ![]() |
AW: PagePicker
Nimm mal die Procedure aus diesem Thema (Posting #4)
![]() |
AW: PagePicker
Zitat:
Zitat:
|
AW: PagePicker
Hallo,
wie jaeneke mitgeteilt hat, muss man quasi alles Sichtbare einmal kurz auf den Bildschirm "malen", dann, z.B. wie perlsau (von Danial. W) gepostet hat, in eine Bitmap kopieren, und dann entsprechend weiterverarbeiten. PaintTo, wie im Link von sx2008 angedeutet, funktioniert deutlich besser, da hier auch gezeichnet wird, wenn die zu zeichnende Komponente NICHT sichtbar ist. Korrektur: Die vorherige Aussage stimmt wohl nur bei verdeckten Fenstern. Ein unsichtbares TabSheet eines PageControl wird z.B. nicht gezeichnet. Dies muss man vorher (kurz) einschalten. Vielen Dank an alle, die sich beteiligt haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz