Ik ben een beginner in het programmeren, al gaat het me steeds wat beter af. (Leuk om resultaat
te merken
)
Ik ben een programma aan het maken waarmee adres-labels kunnen worden geprint. Ik heb de label als PNG, daar knal ik wat strings overheen en dan print ie het plaatje na op een button te hebben geklikt (zonder PrintDialog of wat ook, gewoon klik --> print).
Dat werkt an sich prima, echter wanneer ik voor de 2e keer op de print-knop klik, geeft ie een GDI+ error.
Ik heb al geprobeerd het plaatje te 'disposen' maar dit werkt niet, of ik doe het verkeerd.
Hier een stukje code:
Kan iemand me vertellen hoe ik dat oplos? Mocht de user dat willen, moet ie gewoon 3 of 4x op de print-button kunnen klikken.
te merken
Ik ben een programma aan het maken waarmee adres-labels kunnen worden geprint. Ik heb de label als PNG, daar knal ik wat strings overheen en dan print ie het plaatje na op een button te hebben geklikt (zonder PrintDialog of wat ook, gewoon klik --> print).
Dat werkt an sich prima, echter wanneer ik voor de 2e keer op de print-knop klik, geeft ie een GDI+ error.
Ik heb al geprobeerd het plaatje te 'disposen' maar dit werkt niet, of ik doe het verkeerd.
Hier een stukje code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| private void button1_Click(object sender, EventArgs ee) { Bitmap bitMapImage = new System.Drawing.Bitmap("label.png"); Graphics labelplaatje = Graphics.FromImage(bitMapImage); labelplaatje.SmoothingMode = SmoothingMode.HighQuality; labelplaatje.CompositingQuality = CompositingQuality.HighQuality; string nrOfLabelsStr = numericUpDown1.Value.ToString(); int nrOfLabels = int.Parse(nrOfLabelsStr); int dummy = 0; string AdresText = richTextBox1.Text; if (AdresText.Contains("Lorenskog") || AdresText.Contains("Dubai")) { MessageBox.Show("Transport papers!", "Transport papers"); } labelplaatje.DrawString(AdresText, new Font("Arial", 10, FontStyle.Regular), SystemBrushes.WindowText, new Point(150, 216)); labelplaatje.DrawString(textBox1.Text, new Font("Arial", 36, FontStyle.Bold), SystemBrushes.WindowText, new Point(100, 80)); if (radioButton2.Checked == true) { labelplaatje.DrawString("Normal", new Font("Arial", 32, FontStyle.Bold), SystemBrushes.WindowText, new Point(175, 360)); } else { labelplaatje.DrawString("Next day", new Font("Arial", 32, FontStyle.Bold), SystemBrushes.WindowText, new Point(175, 360)); } bitMapImage.Save("labeloutput.png"); bitMapImage.Dispose(); labelplaatje.Dispose(); do { PrintLabel("labeloutput.png"); dummy++; } while (dummy < nrOfLabels); } //Print Label Event public void PrintLabel(string labelfile) { using (var pd = new System.Drawing.Printing.PrintDocument()) { pd.PrintPage += (k, e) => { var img = System.Drawing.Image.FromFile(labelfile); e.Graphics.DrawImage(img, new Point(75, 50)); }; pd.Print(); pd.Dispose(); } } |
Kan iemand me vertellen hoe ik dat oplos? Mocht de user dat willen, moet ie gewoon 3 of 4x op de print-button kunnen klikken.
[ Voor 73% gewijzigd door AzzKickah op 20-06-2013 19:36 ]
