- PR -

System.Drawing.Penで細線(1以下)が描画できない

投稿者投稿内容
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-01 09:36

こんにちは、System.Drawing.Penで幅は1以下に設定できないでしょうか?
----------------------------------------
Dim blackPen As New Pen(Color.Black, 1)
g.DrawLine(blackPen, 0, 100, 500, 100)
----------------------------------------

0.01に設定しても線の太さは同じでした。
-----------------------------------------
Dim blackPen As New Pen(Color.Black, 0.01)
g.DrawLine(blackPen, 0, 100, 500, 100)
-----------------------------------------

どうすればもっと細い線が描画できますか?
アドバイスよろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-01 09:58
引用:

genさんの書き込み (2006-08-01 09:36) より:

こんにちは、System.Drawing.Penで幅は1以下に設定できないでしょうか?


1 未満 に設定することはできません。
たとえば、0 が指定されても 1# 扱いになります。

引用:

どうすればもっと細い線が描画できますか?
アドバイスよろしくお願いいたします。


えーと、線幅 1 Pixel 未満 を、どのように表現するおつもりでしょうか?

たとえば、System.Drawing.Color.Black ではなく、
Gray などのメンバを仕様すれば、細く見えるようになります。
(これは、ヒトの視覚の仕組みを利用したものです)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-01 12:02

じゃんぬねっとさん、アドバイスありがとうございます。

Grayで印刷して見ましたけど...お客さんは満足できない表情でした

やっぱり最小「1Pixel」しかできないでしょうか?

VB6.0からVB2005にアップグレードの作業なのでVB6.0と同じ帳票が出ないと

ダメなんです。なんとか解決できないと...

よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-08-01 12:18
引用:

genさんの書き込み (2006-08-01 12:02) より:

Grayで印刷して見ましたけど...お客さんは満足できない表情でした(^_^;)


このあたり、プリンタ ドライバ依存ですけどね。

引用:

VB6.0からVB2005にアップグレードの作業なのでVB6.0と同じ帳票が出ないと
ダメなんです。なんとか解決できないと...


元投稿に書かれていないので、初めて知ったわけですが、帳票だったのですね。(;^─^)
ということは、PrintDocument を使用しているということでしょうか。

"アップグレード" という 「文言」 が出てきていますが、VB6 の時は何を使って印字していたのですか?
それと、VB6 の時のプリンタ / プリンタ ドライバを使用された上でのご発言ですよね?
(もちろん、運用環境の)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
KG
会議室デビュー日: 2006/07/24
投稿数: 3
お住まい・勤務地: 熊本県
投稿日時: 2006-08-01 12:25
VB6とVB2005でそれぞれ画像として保存してみてはいかがでしょうか。

それを比べて同じであれば印刷まわりの設定が俄然怪しくなってきますよね。

その時点で違うので有れば、コード等の問題でしょうけども
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-01 12:26
はい、そうですね...PrintDocumentです。

VB6 の時は普通のPrintオブジェクトでした。
---------------------------------------------------------
Public gobjLPrint As Object '' 出力対象オブジェクト

'' 線描画
gobjLPrint.Line (sngSX, sngSY) - (sngEX, sngEY)
----------------------------------------------------------

VB6 の時のプリンタ / プリンタ ドライバは変わりましたけど
VB6のソースでは細線が描画できました。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2006-08-01 12:44
グラフィックスオブジェクトのPageUnitプロパティを
GraphicsUnit.Documentを指定してみてはどうでしょうか?

私のところでテストプログラムを作ってみましたが、
何も指定しない場合よりは細い線になりました。
gen
会議室デビュー日: 2006/07/19
投稿数: 17
投稿日時: 2006-08-01 12:54

じゃんぬねっとさん、よねKENさん、KGさん 
アドバイスありがとうございます。m(_ _)m

すみません、やっぱりプリント設定の問題でした。
EPSON LP-7900でしたけど、windowsのプリンター設定で
トナーセーブをチェックを入れたら細線になりました。

同僚がその設定を言い忘れたみたいです。
申し訳ありませんでした。

GraphicsUnit.Documentは勉強になりましたので
やってみます。

皆さん、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)