Entwickler-Ecke

Programmierwerkzeuge - Oberflächen aus VS2008 heraus drucken


MrKnogge - Fr 03.06.11 13:34
Titel: Oberflächen aus VS2008 heraus drucken
Ich habe hier (Gewusst wie: Drucken eines Formulars) [http://msdn.microsoft.com/de-de/library/85s6fdty(v=vs.90).aspx] folgenden Code-Schnipsel gefunden, mit dessen Hilfe ich ein Formular auf ein Bitmap bekomme:



C#-Quelltext
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:
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern long BitBlt (IntPtr hdcDest, int nXDest, int nYDest, 
    int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
private Bitmap memoryImage;
private void CaptureScreen()
{
    Graphics mygraphics = this.CreateGraphics();
    Size s = this.Size;
    memoryImage = new Bitmap(s.Width, s.Height, mygraphics);
    Graphics memoryGraphics = Graphics.FromImage(memoryImage);
    IntPtr dc1 = mygraphics.GetHdc();
    IntPtr dc2 = memoryGraphics.GetHdc();
    BitBlt(dc2, 00this.ClientRectangle.Width,
        this.ClientRectangle.Height, dc1, 0013369376);
    mygraphics.ReleaseHdc(dc1);
    memoryGraphics.ReleaseHdc(dc2);
}
private void printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    e.Graphics.DrawImage(memoryImage, 00);
}
private void printButton_Click(System.Object sender, System.EventArgs e)
{
    CaptureScreen();
    printDocument1.Print();
}


Nun wäre meine Frage, ob es auch eine Möglichkeit gibt, das Formular direkt an den (PDF)-Drucker zu senden, damit Schriften als Schriften erhalten bleiben?

Viele Grüße & besten Dank!
Christian


jaenicke - Fr 03.06.11 14:17

Nur, wenn du das selbst schreibst.

Heißt: Alles selbst zeichnest und an den Drucker schickst. Also die einzelnen Controls, dabei den Textbereich überschreibst und den Text dort ausgibst, ...

Wozu soll das eigentlich dienen? Geht es denn überhaupt um das visuelle Formular inkl. OS-spezifischem Design etc. in C# oder um ein Formular allgemein, dass gedruckt werden soll.


MrKnogge - Fr 03.06.11 14:56

Ja, es geht um die Programmoberfläche. Diese hätte ich gerne als Vektorgrafik und idealerweise im PDF die Schrift als Schrift.

Daher war mein Gedanke, ob man sie auch aus Visual Studio heraus drucken könnte. Zur Laufzeit muss man es nicht können.