Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Windows 8-Kopier-Dialog nachbasteln? (https://www.delphipraxis.net/190082-windows-8-kopier-dialog-nachbasteln.html)

dGeek 27. Aug 2016 19:47

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).

jaenicke 27. Aug 2016 19:49

AW: Windows 8-Kopier-Dialog nachbasteln?
 
Paintbox mit Zeichnen in OnPaint.

Luckie 27. Aug 2016 19:57

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.

dGeek 27. Aug 2016 20:04

AW: Windows 8-Kopier-Dialog nachbasteln?
 
Zitat:

Zitat von Luckie (Beitrag 1345911)
Aber bitte auf ein Bitmap im Speicher malen und dies im OnPaint auf den Canvas kopieren und nicht im OnPaint alles zeichnen wollen.

Genau das ist gerade mein Problem. Denn immer alles neuzuzeichnen wäre ja total blöd:
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.

Luckie 27. Aug 2016 20:24

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.
http://michael-puff.de/Programmierun...enBitmap.shtml

dGeek 27. Aug 2016 21:53

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;

HolgerX 28. Aug 2016 10:25

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..

himitsu 29. Aug 2016 13:42

AW: Windows 8-Kopier-Dialog nachbasteln?
 
Zitat:

Zitat von dGeek (Beitrag 1345916)
Sieht doch schonmal lustig aus (Screenshot) :lol:

Windows zeigt nicht die Realdaten an, sondern glättet die Ausgabe.
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