![]() |
AW: Statisches BG in ScrollBox
Es geht darum, in einer ScrollBox einen statischen Hintergrund (eine Grafik) zu haben, auf dem die anderen Elemente scrollen, wie auch auf div.
![]() |
AW: Statisches BG in ScrollBox
Wenn du dir das Beispiel anpasst, müsste das klappen:
![]() |
AW: Statisches BG in ScrollBox
Liste der Anhänge anzeigen (Anzahl: 1)
@DeddyH genau das meinte ich
@baumina hatte ich schon versucht, da geht der BG immer noch mit Hab mal eben eine Skizze gemacht diese nummeriert und angehangen. Folgende Situation: Die TScrollBox ist von der Größe beschränkt und hat die Größe von 870x305. Nun wurde das TImage mit einem Bitmap in die TScrollBox anbgelegt. Die Ausrichtung von dem TImage ist NICHT alClient sondern auf AlNone. Das Bitmap an sich ist 1920x1200 groß und das TImage hat die Länge und Breite von TScrollBox übernommen. Es wurde kein Stretch eingstellt. Das führt dazu dass wir nur einen kleinen Teil des Bitmaps sehen, das ist auch so gewollt. Nun wird noch eine TPaintBox abgelegt und ich berechne die Höhe von TPaintBox und diese ist höher als die vom Bitmap. (Siehe 3 und 2) Wenn ich nun über das TImage hinausscrolle, ist danach Schluss mit dem Bitmap. deswegen möchte ich nur einen Teil bis zum Maximum der ScrollBar immer Konstant anzeigen, sodass immer der gleiche Teil des Bitmaps mitläuft und nie endet.(siehe 1) Also soll das TImage als unveränderbares BG fungieren. |
AW: Statisches BG in ScrollBox
Sollen die Wolken nun mitscrollen oder nicht? Ich dachte ja, ich hätte verstanden, was Du willst, bin mir jetzt aber auch nicht mehr sicher.
|
AW: Statisches BG in ScrollBox
Zitat:
|
AW: Statisches BG in ScrollBox
Dann nimm doch mal das gepostete Beispiel und lass die gesamte Positionsberechnung einfach weg, dann sollte es nach kurzem Überfliegen eigentlich klappen.
|
AW: Statisches BG in ScrollBox
Liste der Anhänge anzeigen (Anzahl: 1)
Naja ganz weglassen kann ich sie an der Stelle nicht, dann würde
es ja gar nicht gezeichnet werden. Krieg das leider auch nicht so gewünscht hin.
Delphi-Quellcode:
procedure TMyScrollBox.Painting;
var FDrawHeight, FDrawWidth: Integer; Row, Column, xl, xt, xw, xh: Integer; xdl, xdt: Integer; xRect: TRect; i: integer; xhdl: Word; begin if (FNHBitmap.width <> 0) and (FNHBitmap.Height <> 0) then begin xRect := ClientRect; FDrawHeight := xRect.Bottom - xRect.Top; FDrawWidth := xRect.Right - xRect.Left; xdl := (HorzScrollBar.Position mod FNHBitmap.Width); xdt := (VertScrollBar.Position mod FNHBitmap.Height); for Row := 0 to (FDrawHeight div FNHBitmap.Height) + 1 do begin for Column := 0 to (FDrawWidth div FNHBitmap.Width) + 1 do begin xl := Column * FNHBitmap.Width + xRect.Left - xdl; xt := Row * FNHBitmap.Height + xRect.Top - xdt; xw := FNHBitmap.Width; if (FDrawWidth - xl + xRect.Left) < xw then xw := (FDrawWidth - xl + xRect.Top); xh := FNHBitmap.Height; if (FDrawHeight - xt + xRect.Top) < xh then xh := (FDrawHeight - xt + xRect.Top); (* FNHCanvas.CopyRect( Rect(xl, xt, xl + xw, xt + xh), FNHBitmap.Canvas, Rect(0, 0, xw, xh)*) // Kopiert immer gleichen Bereich und fügt ein FNHCanvas.CopyRect( Rect(0, 0, xw, xh), FNHBitmap.Canvas, Rect(0, 0, xw, xh) ); end; end; end; end; |
AW: Statisches BG in ScrollBox
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe etwas herumprobiert (mit Delphi 5 unter Win 8.1), und hier ist zumindest mal ein Ansatz.
|
AW: Statisches BG in ScrollBox
Das ist schon eine sehr gute Lösung!
Habe es eben mal ausprobiert ohne weiteres läuft es sehr gut, nur leider sieht es mit den weiteren Inhalten in der Scrollbox einwenig schlecht aus. Ich habe ja zusätzlich noch eine Paintbox mit liegen, die auch ihre Sachen zeichnet. Und nach jedem Scrollen wird ja immer neugezeichnet, dann wirkt sich auf die Anzeige der Paintbox aus -> Flakkern nach jedem Scrollvorgang. Da hilft ein Doublebuffered auch nicht mehr. |
AW: Statisches BG in ScrollBox
Da hab ich jetzt spontan auch keine rechte Idee dazu.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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