- - PR -
ドット単位で印刷-プリンタの解像度に合わせて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-08 17:00
プリンタの解像度に合わせて、ドット単位で、
線をGraphicsに描画して、印刷したいと思っております。 今のプリンタの解像度は、大体300dpi の倍数になっておりますので、 GraphicsUnit.Document を使用すれば、大きさとしては、正しく印字されます。 しかし、印字結果は・・・ どう考えても、ドット単位に印字されているとは思えない、 荒さになってしまいます。 C#で、無理であれば、VC++ 等で、DLL を作る事も考えております。 方法があれば、ご教授ください。 よろしくお願いいたします。 | ||||
|
投稿日時: 2006-12-08 17:11
要は、プリンタのデバイスコンテキストを捕まえて、
そこに直接描画。すれば、いいって事なんですかね?^^ よくわからん・・・ | ||||
|
投稿日時: 2006-12-08 18:23
なお、このメソッドを使用する、実際に印刷をする呼び出し元には、
GDI+ の Graphics オブジェクトを返そうと思っていたのですが、 それは、無理な相談なのですかね? hdc をインタフェイスとするしか方法は無いでしょうか? [ メッセージ編集済み 編集者: PAO 編集日時 2006-12-08 18:24 ] | ||||
|
投稿日時: 2006-12-08 22:29
ここで言われている「ドット」って、なんですか?
_________________ | ||||
|
投稿日時: 2006-12-09 05:25
ピクセルです。
| ||||
|
投稿日時: 2006-12-09 13:23
まず、あなたが思っているであろう、1ドットがインク1滴から構成されているのか、確認が必要ではないですか? _________________ | ||||
|
投稿日時: 2006-12-09 14:12
ドットや、ピクセルが、プリンタの解像度の最小単位を、
指していることは、わかっていての逆質問なのですね? その上で、どうやって、確認するのかが知りたいのですね? で、あれば、システム的ではありませんが、 出力結果を計測する検査機のようなものがあると、 前提として思っておいてください。 | ||||
|
投稿日時: 2006-12-09 16:17
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{ e.Graphics.PageUnit = GraphicsUnit.Millimeter; e.Graphics.DrawString("印刷テスト", new Font("MS 明朝", 32), Brushes.Black, new RectangleF(10,10,100,50), new StringFormat()); drawLine(e.Graphics); } [DllImport("gdi32.dll")] private static extern bool LineTo(IntPtr hDC, int x, int y) ; [DllImport("gdi32.dll")] private static extern bool MoveToEx(IntPtr hDC, int x, int y, IntPtr OldPoint); private void drawLine(Graphics g) { IntPtr hDC = g.GetHdc(); MoveToEx(hDC, 100, 500, IntPtr.Zero); LineTo(hDC, 100, 1000); //Release the device context handle obtained by a previous call g.ReleaseHdc(hDC); } な感じで、できました。 要は、GDI+ と、gdi32 の共存ができるか、知りたかったんですね。^^ |