Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm zeichnen (https://www.delphipraxis.net/111619-delphi-programm-zeichnen.html)

Larsi 6. Apr 2008 18:16


Delphi Programm zeichnen
 
Hi,
mir ist grade die Frage gekommen, ob es schon Programe gibt, die ein Blatt Papier auf dehnen Formular Informationen draufstehen zu einer Delphi Anwendung machen kann? Also zb ich male auf ein Dina4 Blatt alle Forms mit Bleistift, alle Edits mit einem roten stift und so weiter und das Programm macht daraus wen man dass Bild einscannt eine Delphi Anwendung. Grenzt wahrscheinlich an Ocr oder? Wäre ganz lustig wenn es das gäbe aber irgendwie kann ich mir sowas nicht vorstellen obwohl ich das praktisch fände dass man dann zb wenn man keinen Computer hat dann schonmal alles zeichnet!


MFG Lars Wiltfang

s-off 6. Apr 2008 18:34

Re: Delphi Programm zeichnen
 
Hallo,

denke nicht, dass es soetwas bereits gibt, obwohl es sich recht lustig anhört :-D

Dennoch denke ich, dass es mit dem Formulardesigner sehr viel komfortabler wäre, die einzelnen Controls korrekt zu platzieren.
Mal mal 20 Edits unterschiedlicher Breite rechtsbündig auf ein Blatt Papier ;)

Und wie unterschiedest Du ListBox und Listview, Edit und MaskEdit, ControlX und ControlY...?

Larsi 6. Apr 2008 18:36

Re: Delphi Programm zeichnen
 
ganz einfach: ich schreibs rein oder nehme mein 100 farben farb kasten :)

s-off 6. Apr 2008 18:39

Re: Delphi Programm zeichnen
 
Zitat:

Zitat von Larsi
ganz einfach: ich schreibs rein oder nehme mein 100 farben farb kasten :)

Ok, überzeugt ;)

Was möchtest Du denn mit diesem Programm erreichen? Soll es dem Entwickler Arbeit abnehmen? Unter diesem Aspekt weise ich nochmal auf meinen Einwurf mit der Komfortabilität hin.

Larsi 6. Apr 2008 18:41

Re: Delphi Programm zeichnen
 
Man könnte doch einfach Stempel nehmen, zb die wo man normalerweise seine Namen reinschreibt und dann da halt edit reinschreibt! :) [Ot] Meine nächsten zehn Beiträge in diesem Thema einfach nicht ernst nehmen :) [OT]

Fussball-Robby 6. Apr 2008 18:43

Re: Delphi Programm zeichnen
 
Im Prinzip eigentlich keine schlechte Idee, aber was ist, wenn du dich vermalst oder etwas ändern willst? :mrgreen:

Larsi 6. Apr 2008 18:46

Re: Delphi Programm zeichnen
 
Man streicht sie einfach durch! Kurze Frage: Gibt es hier in der Delphi-Praxis schon eine Ocr Software dessen Autor mir den Source geben könnte, ich würde das echt mal anfangen!

Namenloser 6. Apr 2008 18:48

Re: Delphi Programm zeichnen
 
Ich frag mich, ob der Entwicklungsaufwand für das Programm die eventuelle Zeiteinsparung beim Formaulardesignen rechtfertigt :mrgreen:

Larsi 6. Apr 2008 19:07

Re: Delphi Programm zeichnen
 
Kann man den nicht direkt in Delphi ein rotes Rechteck auswerten sodass man halt weiß das es rot ist und wo es positioniert ist? Ist das so kompliziert?

Die Muhkuh 6. Apr 2008 19:09

Re: Delphi Programm zeichnen
 
Was bitte soll das bringen?

Wenn man unterwegs eine zündende Idee für ein GUI hat, hat man es viel schneller skizziert und nachher in Delphi nachgebaut, als wenn man das "perfekt" malen muss.

Larsi 6. Apr 2008 19:12

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!

busybyte 6. Apr 2008 19:13

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.

Larsi 6. Apr 2008 19:16

Re: Delphi Programm zeichnen
 
Meine Rede :)

busybyte 6. Apr 2008 19:17

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.

lbccaleb 6. Apr 2008 20:45

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

s-off 6. Apr 2008 23:12

Re: Delphi Programm zeichnen
 
Zitat:

Zitat von Larsi
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!

Und dann? Meinst Du, die Anordnung der einzelnen Controls sieht dann schön aus? Du müsstest in jedem Fall nochmal manuell Hand anlegen, wenn Du nicht willst, dass der Anwender sich vorkommt wie in einem Rübenfeld.

Naja, es sei denn, Du schreibst noch als Anweisung 'Controls bitte sinnvoll ausrichten' drunter :lol:

Namenloser 6. Apr 2008 23:44

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.

Dunkel 7. Apr 2008 00:28

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.

Larsi 7. Apr 2008 13:32

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

Relicted 7. Apr 2008 14:00

Re: Delphi Programm zeichnen
 
Zitat:

Zitat von Dunkel
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:

pflichtenheft wird überbewertet... usb verbindung zum hirn und dann über gedanken ein programm entwickeln!

Zitat:

Zitat von Dunkel
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.

interessant wirds nur wenn man in richtung WPF (windows presentation foundation) geht.. da kann man ja buttons bauen die die beklopptesten formen, farben usw. haben. und das ganze auch noch als vektorgrafik. wenn man einen begabten zeichner hat könnte sich sowas sicherlich lohnen :-)

defede 7. Apr 2008 14:31

Re: Delphi Programm zeichnen
 
Hallo,
also die Idee ist zumindest einen Versuch wert *g*
Ich würde allerdings über Schablonen versuchen zu erkennen welches
Object erzeugt werden soll. Ein "Roter Kasten = Edit" und wie erkennt man ein
Label oder ein Memo? oder beschränkst dich nur auf ein paar Komponenten?

lg

busybyte 7. Apr 2008 19:51

Re: Delphi Programm zeichnen
 
Zitat:

Wie eschafee ich es zb ein Dunkelrot codetechnisch zu einem normalen rot gemacht wird von Delphi
Suche mal nach RGB

grenzgaenger 7. Apr 2008 22:23

Re: Delphi Programm zeichnen
 
Zitat:

Zitat von Larsi
[Ot] Meine nächsten zehn Beiträge in diesem Thema einfach nicht ernst nehmen :) [OT]

an die moderatoren, weshalb verschiebt man solche nicht ernstzunehmende beiträge nicht nach klatsch & tratsch?

falls wirklich noch ein interessanter beitrag kommen sollte, kann ja der teilnehmer einen neuen thread eröffnen... aber das halt ich doch für sehr überflüssig da weiterzulesen.

GG

Larsi 8. Apr 2008 11:56

Re: Delphi Programm zeichnen
 
Ja an dem Zeitpunkt habe ich es noch nicht für möglich gehalten jetzt schon :) Das könntem man eher unter Projekte verschieben^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:06 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