Laden...

Code zum Zeichnen von Barcodes verhält sich anders, wenn in Klassenbibliothek ausgelagert

Erstellt von Kasperdelasopa vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.032 Views
K
Kasperdelasopa Themenstarter:in
118 Beiträge seit 2006
vor 15 Jahren
Code zum Zeichnen von Barcodes verhält sich anders, wenn in Klassenbibliothek ausgelagert

Hallo zusammen,

ich habe ein sehr ärgerliches Phänomen: ich habe eine Windowsanwendung geschrieben die mir einen Barcode erzeugt als Bitmap erzeugt und in einer PictureBox ausgibt. Um den Code zu erzeugen erzeuge ich mir ein Image in der Größe wie es ein soll und erzeuge mir dann darüber ein Graphics Objekt um in das Image den Code einzuzeichnen.

Nun, in der Windowsanwendung geht es einwandfrei. Jetzt wolle ich aber eine Bibliothek erstellen die den Teil des Erzeugens des Bitmaps übernimmt.

Obwohl ich für die Klassenbibliothek den absolut identischen Code verwendet habe wie in meiner Windowsanwendung wird der Barcode nicht richtig gezeichnet.

Kann es den sein das die Klasse Graphics, die ich erst als Verweis hinzufügen müsste in der Klassenbibliothek Probleme macht?

Von meinem Programmablauf her könnte es aber auch daran liegen das ich öfters von int auf float caste, muckt hier vieleicht die Bibliothek rum.

Hoffe ihr habt ne Idee

Gruß

946 Beiträge seit 2008
vor 15 Jahren

absolut identischen Code

Dann müsste das eigentlich funktionieren.

Kann es den sein das die Klasse Graphics, die ich erst als Verweis hinzufügen müsste in der Klassenbibliothek Probleme macht?

Eigentlich nicht.

Das müsste an etwas anderem liegen.

die mir einen Barcode erzeugt als Bitmap erzeugt und in einer PictureBox ausgibt.

Ich glaube, mit einem eigenen Control ginge das schneller und ausserdem wird der Barcode dann auch nach Grössenänderungen nicht ungenau.

mfg
SeeQuark

K
Kasperdelasopa Themenstarter:in
118 Beiträge seit 2006
vor 15 Jahren

Sorry aber das löst mein Problem nicht 😃

  • Es handelt sich wirklich um den identischen Code
  • Es gibt keine Unschärfen bei meinem Barcode da ich angeben kann wie groß der Barcode sein soll

Aber wie gesagt das sind nicht meine Probleme, sind den keine Probleme solcher Art bekannt?

Gruß

Gelöschter Account
vor 15 Jahren

bei identischen code muss das selbe dabei herauskommen. irgendetwas musst du also anders machen, wenn das ergebniss anders aussieht.

an den referenzen kann es nciht liegen. ebenso nicht an der tatsache, das es nun eine dll ist und nicht eine exe, da sowieso beides MSIL code ist.

K
Kasperdelasopa Themenstarter:in
118 Beiträge seit 2006
vor 15 Jahren

Da kann ich leider nicht mehr machen als dir voll und ganz rechtgeben.

Aber genau das ist ja auch der Grund warum ich hier ein Thema eröffnet habe, es müsste eigentlich, tut aber ned.

Ich habe jetzt auch mal versucht den teil den ich in eine Klassenbibliothek gesteckt habe, einfach mal nur in eine eigene Klasse zu tun (gleicher Namensraum) --> gleiches (negatives) Ergebnis

Kann es vieleicht sein, das ein Bitmap Objekt noch zusätzliche Parameter benötigt damit beim verwenden der Graphics Klasse alles sauber gezeichnet werden kann?

Hier mal die Codestücke die ich für relevant halte:

So rufe ich die Methode auf die mir dann das Bitmap zurückgeben soll


Bitmap img = new Code39().getCode(pic_width, pic_height, textBox1.Text, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

So wird in der Funktion getCode() das Bitmap erzeugt und einem Graphics Objekt übergeben:


public Bitmap getCode(int w, int h, string code, PixelFormat format)
{
//pic_height und pic_width sond globale Vaiablen
this.pic_height = h;
this.pic_width = w;

.....

Bitmap pic = new Bitmap(pic_width, pic_height, format);

Graphics g = Graphics.FromImage(pic);
g.Clear(Color.White);

....
//in das Bitmap malen
g.FillRectangle(Brushes.Black, filled_pixels_width, (float)0, barwidth_big, (float)pic_height);
}

Gelöschter Account
vor 15 Jahren

der code schaut augenscheinlich gut aus. kannst du mal einen screenshot vom sollzustand und einen screenshot vom falschen ergebniss als bild anhängen?

also eins, wo die layoutlogik in der methode selbst ist und eins, wo die layoutlogik in der klasse ausgelagert ist.

S
167 Beiträge seit 2008
vor 15 Jahren

Auch wenn das nur nen Code-Ausschnitt ist, musst du da was zurückgeben am Schluss? 😉

Gelöschter Account
vor 15 Jahren

Auch wenn das nur nen Code-Ausschnitt ist, musst du da was zurückgeben am Schluss? 😉

das ist dann die variable "pic".

S
167 Beiträge seit 2008
vor 15 Jahren

Ja und genau das fehlt.
Entweder beim posten oder beim kopieren in die dll untergegangen 😁

Gelöschter Account
vor 15 Jahren

beim posten... sonst gäbe es einen compilerfehler.

S
167 Beiträge seit 2008
vor 15 Jahren

hmm. stimmt auch wieder.
Ich wr nur verwundert weil die FUnktion so schön geschlossen wurde X(