![]() |
TImage "scrollen"
Tag! :hi:
Ich habe ein TImage mit dem ich per Canvas ein art Diagramm zeichne. (Man kennt das aus der CPU-Auslastung (Taskmanager)). Das klappt auch alles wunderbar. Nur irgendwann ist das beste TImage zu ende ^^. Wie kann ich machen, dass das immer so ein Stückchen weiterscrollt? :?: Danke für Hilfe mfg :mrgreen: ps: hab schon gesucht.... :-( |
Re: TImage "scrollen"
auf ne scollbox legen
|
Re: TImage "scrollen"
..ich glaube er meinte das ein bischen anderst!
Meine Idee wäre Spontan gewesen sämtliche Reihen auf einmal eins nach Links zu schieben, und das Linke zu überschreiben und Rechts eins hinzuzufügen, zur Technischen umsetzung kann ich so schnell nichts sagen, da müsste man sich länger damit beschäftigen! |
Re: TImage "scrollen"
![]() Aber nicht die erste Lösung nehmen :mrgreen: . |
Re: TImage "scrollen"
Zitat:
@ Speedmaster: Die Technische Umsetzung - die fehlt mir auch :lol: mfg :hi: @ Khabarakh: Des Peil ich irgendwie net :-| |
Re: TImage "scrollen"
Naja musste vermutlich immer neu zeichnen lassen.
Könntest auch den Left-Abstand nicht direkt angeben sondern als ne Variable, die du dann immer hoch-/ runtersetzt. Schreib mal bitte genauer, was das werden soll! |
Re: TImage "scrollen"
Vom Prinzip her (hab ich oben schon geschrieben) wie das CPU-Diagramm im TaskManager. Aber ich will auch nicht unbedingt ein 5000 Pixel langes Image auf meiner Form haben, von dem man nur 300 Pixel sieht....
mfg :gruebel: |
Re: TImage "scrollen"
Scrollbox ist sicherlich nicht dafür geeignet. Das Image würde ja immer größer werden.
Speicher die ganzen Werte in nem Array und zeichne dann mit Hilfe dieser Werte im Array. Wenn ein neuer Wert hinzukommt und die max. Größe des Arrays erreicht ist (also dann wenn das Image "voll" ist), dann musst du das als erstes eingefügte Element löschen und alle anderen Elemente verschieben. Dann wird das Element das zweite Element, das erste usw... Mit den aktualisierten Werten kannst du dann wieder zeichnen... Ums ständige neuzeichnen kommst du nicht herum |
Re: TImage "scrollen"
:thumb: Jo so mach ich's. Und mal moch ne ganz dumme Frage: Wie kann ich das Image wieder löschen :oops: ?
Vielen Dank euch allen :thumb: :hi: |
Re: TImage "scrollen"
Zitat:
Schau Dir mal ![]() Gruß, teebee |
Re: TImage "scrollen"
Stimmt @teebee :)
@mr47: Mit der Hintergrundfarbe überzeichnen? |
Re: TImage "scrollen"
Den Code von Luckie kannst du eigentlich gleich so übernehmen, getestet habe ich ihn aber auch noch nicht.
Delphi-Quellcode:
type
TValueArray = array of Cardinal; var ValueArray: TValueArray; implementation {$R *.dfm} procedure PaintGraph(Bmp: TBitmap; Color: TColor; ValueArray: TValueArray); var rect: TRect; i: Integer; len: Integer; begin Bmp.Canvas.Brush.Color := clWhite; rect.Top := 0; rect.Left := 0; rect.Right := Bmp.Width; rect.Bottom := Bmp.Height; Bmp.Canvas.FillRect(rect); len := length(ValueArray); Bmp.Canvas.Pen.Color := Color; for i := 0 to Bmp.Width - 1 do begin Bmp.Canvas.MoveTo(i, Bmp.Height); Bmp.Canvas.LineTo(i, Bmp.Height-ValueArray[len-i-1]); end; end; procedure TForm1.FormCreate(Sender: TObject); begin OffScreenBmp := TBitmap.Create; OffScreenBmp.Width := ClientWidth; OffScreenBmp.Height := ClientHeight; SetLength(ValueArray, ClientWidth); Index := length(ValueArray) - 1; Randomize; Timer1.Interval := 50; DoubleBuffered := True; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(OffScreenBmp); end; procedure TForm1.FormPaint(Sender: TObject); begin BitBlt(Canvas.Handle, 0, 0, ClientWidth, ClientHeight, OffScreenBmp.Canvas.Handle, 0, 0, SRCCOPY); end; procedure TForm1.Timer1Timer(Sender: TObject); var i: Integer; begin ValueArray[Index] := random(ClientHeight); //GetCPUUsage * 10; Dec(Index); if Index = 0 then begin for i := 0 to length(ValueArray) - 1 do ValueArray[i] := 0; PaintGraph(OffScreenBmp, clRed, ValueArray); Repaint; Index := length(ValueArray)-1; end; PaintGraph(OffScreenBmp, clRed, ValueArray); Repaint; end; Zitat:
![]() |
Re: TImage "scrollen"
TBitmap32 <> TBitmap oder sogar Canvas!
|
Re: TImage "scrollen"
Ich wollte ja nur darauf hinweisen, wie sehr die GR32-Lib die Arbeit erleichtert, deswegen auch der Link und die Namensgebung :wink: .
|
Re: TImage "scrollen"
Die Lib ist wirklich klasse, aber einen Clear-Ersatz gibt es beim normalen Canvas auch. Du musst einfach alles übermalen, das ist ja auch nicht all zu umständlich..
|
Re: TImage "scrollen"
Ok. Danke euch. :wink:
|
Re: TImage "scrollen"
Zitat:
Delphi-Quellcode:
Etwas übertrieben :zwinker: .
Bitmap.Canvas.Pen.Color := clWhite;
Bitmap.Canvas.Brush.Color := clWhite; Bitmap.Canvas.Rectangle(Rect(0, 0, Bitmap.Width, Bitmap.Height)); Bitmap32.Clear(clWhite32); Bitmap.Canvas.Pen.Color := clRed; Bitmap.Canvas.Brush.Style := bsClear; Bitmap.Canvas.Rectangle(MyRect); Bitmap32.FrameRectS(MyRect, clRed32); [edit]Hups, langsam wirds etwas OT. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 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