![]() |
Windows 8-Kopier-Dialog nachbasteln?
Liste der Anhänge anzeigen (Anzahl: 1)
Kurz und knackig.
Ich habe mich schon oft abgemüht und versucht in etwa so etwas wie in meinem angehängten Bild nachubasteln. Ich habe es auch schon mehr oder weniger geschaft. Aber was ich dann gemalt habe war sehr unschön und nicht permanent (Form bewegt und es war weg). Wisst ihr zufällig, wie man es besser machen kann als mit Canvas und Panel? (siehe Screenshot, das ist mein Ziel). |
AW: Windows 8-Kopier-Dialog nachbasteln?
Paintbox mit Zeichnen in OnPaint.
|
AW: Windows 8-Kopier-Dialog nachbasteln?
Aber bitte auf ein Bitmap im Speicher malen und dies im OnPaint auf den Canvas kopieren und nicht im OnPaint alles zeichnen wollen.
Wobei ich diesen Schnickschnack für überflüssig halte, da es den Kopiervorgang künstlich bremst. |
AW: Windows 8-Kopier-Dialog nachbasteln?
Zitat:
Das ist eh alles nur Rumspielerei. Angenommen man würde das Neuzeichnen in einen eigenen Thread verlegen, würde das den Kopierprozess noch immer ausbremsen? Der Kopierprozess wäre natürlich in einem wieder anderen Thread. |
AW: Windows 8-Kopier-Dialog nachbasteln?
Genau deswegen sollst du ja auch ein Bitmap im Speicher malen und es bei bedarf auf den Canvas kopieren.
![]() |
AW: Windows 8-Kopier-Dialog nachbasteln?
Liste der Anhänge anzeigen (Anzahl: 1)
Sieht doch schonmal lustig aus (Screenshot) :lol:
Delphi-Quellcode:
var
Form1: TForm1; iRandom, iCnt, iCnt2, iNegative, bmpWidth, iOldY: Integer; bmp: TBitmap; const cPenColor = $0079C579; cTopColor = $00359E35; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := not Timer1.Enabled; end; procedure TForm1.FormCreate(Sender: TObject); begin Randomize; iRandom := 50; iCnt := 1; iCnt2 := 0; iNegative := 0; bmp := TBitmap.Create; bmp.Canvas.Pen.Width := 1; bmp.Width := PaintBox1.Width; bmp.Height := PaintBox1.Height; bmpWidth := bmp.Width; end; procedure TForm1.FormDestroy(Sender: TObject); begin bmp.Free; end; procedure TForm1.PaintBox1Paint(Sender: TObject); var xPos: Integer; begin if iNegative < 0 then begin xPos := iNegative; bmp.Width := bmp.Width + (xPos * -1); bmpWidth := bmp.Width + (iNegative * -1); end else begin xPos := 0; bmpWidth := bmp.Width; end; BitBlt(PaintBox1.Canvas.Handle, xPos, 0, bmpWidth, bmp.Height, bmp.Canvas.Handle, 0, 0, SrcCopy); end; procedure TForm1.Timer1Timer(Sender: TObject); var tmpRand: Integer; begin if iCnt > 0 then begin repeat tmpRand := RandomRange(iRandom - 10, iRandom + 10); until tmpRand > 20; end; iRandom := tmpRand; iNegative := PaintBox1.Width - iCnt; Caption := IntToStr(iRandom) + ' ' + IntToStr(iNegative) + ' ' + IntToStr(bmpWidth) + ' ' + IntToStr(iOldY); bmp.Canvas.Pen.Color := cPenColor; bmp.Canvas.MoveTo(iCnt, PaintBox1.Height); bmp.Canvas.LineTo(iCnt, iRandom); bmp.Canvas.Pen.Color := cTopColor; bmp.Canvas.MoveTo(iCnt, iRandom); bmp.Canvas.LineTo(iCnt, iRandom - 2); // bmp.Canvas.Pixels[iCnt, iOldY] := clRed; PaintBox1.Repaint; inc(iCnt); iOldY := iRandom; end; |
AW: Windows 8-Kopier-Dialog nachbasteln?
Hmm..
Ich habe den unter #1 angehängten Kopierdialog im JDownloader2 gesehen, somit sollte dieser auch in anderen Applikation eingebunden werden können.. Und JDownloader2 ist wenn ich es richtig verstanden habe Java.. |
AW: Windows 8-Kopier-Dialog nachbasteln?
Zitat:
Quasi jeweils ein "Mittelwert" über die letzten Paar Pixel/Sekunden/Minuten, drum sieht es dort nicht so eckig aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz