![]() |
Re: Delphi Programm zeichnen
Warum denn perfekt? Also ich finde wenn man was skizziert ist es praktisch wenn man es schnell einscannt und zu ner GUI macht als wenn man dann nochmal alles nochmal übertragen muss!
|
Re: Delphi Programm zeichnen
So schwer ist das auch nicht umzusetzen,da man ja das eingescannte Bild als Bitmap(Jpg/Png).canvas abscannen/verarbeiten könnte.
|
Re: Delphi Programm zeichnen
Meine Rede :)
|
Re: Delphi Programm zeichnen
Ansatz:
Delphi-Quellcode:
**********************************************
* grüße and ahmet von smallsmoker * * differenzbild prozedur von alleinherrscher * **********************************************} unit uDifferenzbild; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, math; type TForm1 = class(TForm) imDiff: TImage; imScr1: TImage; imScr2: TImage; btnScr1: TButton; btnDiff: TButton; btnScr2: TButton; imNew: TImage; btnNew: TButton; procedure btnScr1Click(Sender: TObject); procedure btnScr2Click(Sender: TObject); procedure btnDiffClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnNewClick(Sender: TObject); private { Private-Deklarationen } scr1,scr2,diff:tbitmap; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} // Die Screenshot prozedur procedure ScreenShot(DestBitmap:TBitmap; bmpxfr:integer); var dc : HDC; begin try dc := getdc(getdesktopwindow); destbitmap.width := getdevicecaps (dc, horzres); destbitmap.height := getdevicecaps (dc, vertres); if bmpxfr= 4 then destbitmap.pixelformat:=pf4bit else if bmpxfr=8 then destbitmap.pixelformat:=pf8bit else if bmpxfr=16 then destbitmap.pixelformat:=pf16bit else if bmpxfr=24 then destbitmap.pixelformat:=pf24bit else if bmpxfr=32 then destbitmap.pixelformat:=pf32bit; bitblt(destbitmap.canvas.handle, 0, 0, destbitmap.width, destbitmap.height, dc, 0, 0, srccopy); except exit; end; end; // Die prozedur die das differenzbild erzeugt procedure GetDifference(ZielDC,DC1,DC2:HDC;DCwidth:integer;DCheight:integer); begin BitBlt(ZielDC,0,0,DCwidth,DCheight,DC2,0,0,SRCCOPY); BitBlt(ZielDC,0,0,DCwidth,DCheight,DC1,0,0,SRCINVERT); end; procedure TForm1.FormCreate(Sender: TObject); begin scr1 := tbitmap.create; scr2 := tbitmap.create; diff := tbitmap.create; end; // Der erste Screenshot wird gemacht und in scr1 gespeichert, das wiederum wird in imscr1 angezeigt procedure TForm1.btnScr1Click(Sender: TObject); begin screenshot(scr1,32); imscr1.picture.bitmap := scr1; imscr1.Repaint; btnscr2.Enabled := true; end; // Der zweite Screenshot wird gemacht und in scr2 gespeichert, das wiederum wird in imscr2 angezeigt procedure TForm1.btnScr2Click(Sender: TObject); begin screenshot(scr2,32); imscr2.picture.bitmap := scr2; imscr2.Repaint; btndiff.Enabled := true; end; // Der Differenzbild von scr1 und scr2 wird erstellt procedure TForm1.btnDiffClick(Sender: TObject); begin diff := tbitmap.Create; try diff.Width := min(scr1.Width, scr2.Width); diff.Height := min(scr1.height, scr2.height); GetDifference(diff.Canvas.Handle, Scr1.Canvas.handle, scr2.Canvas.handle, diff.Width, diff.Height); imDiff.Picture.bitmap := diff; imDiff.Repaint; btnnew.Enabled := true; finally scr2.Free; end; end; // scr1 wird in newpic kopiert, und das differenzbild wird auf newpic gelegt procedure TForm1.btnNewClick(Sender: TObject); var newpic:tbitmap; begin newpic := tbitmap.Create; try newpic := scr1; newpic.Width := diff.Width; newpic.Height := diff.height; bitblt(newpic.Canvas.handle, 0, 0, diff.Width, diff.Height, diff.Canvas.handle, 0, 0, SRCINVERT); imnew.Picture.bitmap := newpic; imnew.Repaint; finally scr1.free; diff.Free; end; end; end. |
Re: Delphi Programm zeichnen
also ich halte das auch mal für ne supert idee, und umsätzbar währe das ja auch!! naja wobei ich von mir selber auch behaupten kann das ich bei der guten alten methode bleib ;-)
naja wenn du willst ich hab mal was mit scannern gemacht, da kann ich dir in der richtung noch ein bisschen was übermitteln wenn du willst, musst mich dann nur anschreiben!! |
Re: Delphi Programm zeichnen
Zitat:
Naja, es sei denn, Du schreibst noch als Anweisung 'Controls bitte sinnvoll ausrichten' drunter :lol: |
Re: Delphi Programm zeichnen
Ein anderes Problem wären Panels: woher soll das Programm wissen, ob ein Button darüber liegt, oder darn? Spätestens bei TabControls bekommst du sowieso Probleme.
|
Re: Delphi Programm zeichnen
Hmm... interessanter fände ich, wenn ein Programm dazu in der Lage wäre, aus einem Pflichtenheft ein fertiges Programm zu basteln; der fertige Quelltext würde mir persönlich auch schon reichen. :wink:
Mal im Ernst: die Idee ist ganz OK. Nur ist die RAD-Umgebung von Delphi IMHO schon so komfortabel, dass man sie nicht mehr großartig verbessern kann. Und warum sollte ich analoge Hilfsmittel (Blatt Papier & zig Buntstifte) in die Hand nehmen, wenn die digitale Technik IMHO präziser und unkomplizierter zu handhaben ist?! Eine unterwegs gemachte Skizze der GUI in Delphi umzusetzen ist das kleinste Übel der Programmierung. |
Re: Delphi Programm zeichnen
Hi,
es geht schnell voran in der Version die ich bald uppen werden kann man schon ein Blatt Papier mit nem roten Viereck in das Programm einfügen und dann wird dort ein edit erstellt! :) Mir kommt grade ne Frage auf: Wie eschafee ich es zb ein Dunkelrot codetechnisch zu einem normalen rot gemacht wird von Delphi?? |
Re: Delphi Programm zeichnen
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 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