![]() |
Bilder in einen Delphi5 Quellcode umwandeln?
Hi,
wir machne momentan in Delphi5 (scheiß Schule) Grafiken. Das dumme ist, dass wir keine fertigen Bilder importieren dürfen, sondern nur selbst welche erstellen dürfen mit den Delphi5-Befehlen. Ich hab da also mal ne Frage: Wenn ich ein Bild im Paint erstelle, was für möglichkeiten hab ich da dieses ins Delphi5 rein zu kriegen? Geht es, dass ich mir einen Quellcode von dem Bild erstellen lasse? |
Hallo!
"wir machne momentan in Delphi5 (scheiß Schule) Grafiken." Was heist bei dir Grafiken machen? :roll: Wenn ich das richtig verstehe möchtest Du aus einer ".bmp"-Datei einen Quellcode erstellen, der dir dann in Delphi das Bild zeichnet, z.B. mit Canvas usw...? Ein einfaches Bitmap in irgendeinen Quellcode zu wandeln geht meiner Meinung nach nicht... zumindest noch nicht. Programmieren könnte man so ein kleines Tool, aber über den Sinn lässt sich sicher streiten! :coder: Gruß, Steffen |
Wir machen solche Sachen mit Canvas, wie du richtig vermutet hast.
Wir benutzten Befehle wie Pie Ellipse Polygon Udn ich woltle wisssen ob das geht, das ich ein Bild nehem und es in solche Befehle zerlegen lasse. |
Ui. Gehen tut es bestimmt. Aber stell dich auf eine etwas längere Entwicklungszeit ein. Du mußt ja das Bitmap analysieren, die Strukturen erkennen und dann in Code umsetzten. Viel Spaß. :wink:
Beispiel: Schwarzer Kreis auf weißen Hintergriund. Dein Programm muß jetzt erkennen, dass es sich um einen Kreis handelt, nicht um eine Ellipse, es muß den Radius, den Mittelpunkt und die Linienstärke bestimmen, um dann mit der entsprechenden Funktion den kreis auf dein Canvas zu zeichnen. Ich hoffe, du hast jetzt eien Vorstellung davon, was das für einen Aufwand bedeutet. |
Du kannst - rein theoretisch - ein Programm schreiben, was für jeden Bildpunkt der Bitmap eine Delphi-Code-Zeile nach dem Schema
Delphi-Quellcode:
erstellen. Aus einem Bild mit zwei schwarzen Pixeln in einer und zwei weißen in der nächsten Zeile würde so was rauskommen:
canvas.pixels[x,y] := Farbe
Delphi-Quellcode:
Ist allerdings ziemlich schwachsinnig :wink:
canvas.pixels[0,0] := #000000;
canvas.pixels[1,0] := #000000; canvas.pixels[0,1] := #FFFFFF; canvas.pixels[1,1] := #FFFFFF; |
Das wäre natürlich eien Möglichkeit, aber ich würde dann mit Scanline arbeiten. Aber bei entsprechend großen Bitmaps würde es entsprechend lange dauern.
|
Wenn ich dich richtig verstehe, willst du dir eigentlich nur die Arbeit leichter machen, wie? :lol:
Aber du könntest es auch mit Source machen:
Delphi-Quellcode:
So sollte es eigentlich funktionieren...
EinBitmap.LoadFromFile('DeineDatei.bmp'); // EinBitmap ist von Typ TBitmap
Canvas.Draw(EinBitmap, 1, 1); Chris |
und wenn dein Lehrer dumm genug ist dann merkt er es gar nicht...
oder so wie bei uns ein Lehrer der ein Programm bei dem man die Jahreszahl eingibt und dann das Datum von Weihnschten in diesem Jahr erfährt, mit 1 benotet hat ;) |
Lol dass war sicher nicht schwer so ein Programm :)
|
Hallo!
Es gibt 2 Arten von Grafiken: 1. Bitmap-Grafiken. Fast alles in Windows arbeitet damit. Bei Bitmaps wird jeder Bildpunkt durch seine Farbe beschrieben. "Druck"-Vorgänge laufen z.B. so ab, daß Windows eine Bitmap erstellt und diese pixelweise an den sogenannten Drucker (im Grunde genommen ist das nur ein Matrix-Plotter) sendet. Bitmaps über Code zu importieren läuft entweder auf pixelweise Übertragung hinaus oder wird Nobelpreis-verdächtig! Es gibt nämlich keine Möglichkeit, mit vertretbarem Aufwand "Strukturen" im Bild zu erkennen. Man kann nur eine vollständige Übereinstimmung (Dateien sind byteweise gleich) oder eine Ähnlichkeit (z.B. Gesichtserkennung) realisieren. Ein Programm, das auch nur geometrische Figuren eindeutig erkennt, überfordert selbt einen Pentium 20 mit 1000 GHz Takt (verfügbar vermutlich ab 2005) sowie 64 GByte RAM :mrgreen: 2. Vektor-Grafiken. Diese sind ganz anders - hier wird eine Beschreibung gespeichert. Einfachstes Beispiel: echte Drucker. Die erhalten z.B. den Buchstaben "A" als ASCII- oder ANSI-Zeichen übermittelt und wissen dann, wie das Zeichen im eingestellten Zeichensatz auszusehen hat. Auch die Größe ergibt sich aus der eingestellten Schriftgröße. CAD-Systeme arbeiten genauso. Man erzeugt z.B. einen Kreis und kann ihn dann später vergrößern, verkleinern, verschieben, wieder vergrößern und die Qualität bleibt erhalten, da der Kreis im Programm nur aus der Position des Mittelpunktes und dem aktuellen Radius besteht, sein Bild entsteht erst bei der Ausgabe. Für Vektorgrafiken kann man (wenn man das Dateiformat kennt) natürlich einen Übersetzer schreiben, der Delphi-Source generiert. Problem: in der Regel ist das Dateiformat "ein wertvolles Geschäftsgeheimnis des Herstellers" und darf deshalb nicht analysiert werden. Wenn man es heimlich "für private Zwecke" benutzen will, ergibt sich das Problem, daß das Format natürlich nirgends dokumentiert ist. Viel Spaß beim Zeichnen und analysieren von Probedateien. Aus dem obengenannten ergibt sich natürlich auch: es ist leicht, eine Vektorgrafik in eine Bitmap umzuwandeln - aber das ist eine Einbahnstraße, zurück geht nicht. Die entsprechenden Grafikprogramme behelfen sich mit eingefügten Bitmaps, die beim Vergrößern die bekannten Treppen bilden. Ein mir bekanntes Vektorgrafikprogramm ist StarDraw von der Firma StarDivision (war mal Hamburg, mal Lüneburg). Leider ist das a) etwas im Namen der DOSe - und b) Firma nebst Programmen an Sun verkauft (StarOffice, OpenOffice) - StarDraw für DOS dürfte legal nirgends mehr herzubekommen sein. Der Zeichner von OpenOffice scheint auch Vektor zu sein - am Besten mal in die Sources gucken und dann den Delphi-Generator schreiben :mrgreen: Wie heißt es so schön: FF - Fiel Fergnügen! :mrgreen: Gruß Dietmar Brüggendiek |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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