MS明朝でアンチエイリアス – プログラミング – Home

MS明朝でアンチエイリアス
 
通知
すべてクリア

MS明朝でアンチエイリアス


亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

連投失礼します。
Windows7、VS2008です。

テストとして、Feature Packを使わないSDIのプロジェクトを作成し、
ビュークラスの描画関数を以下のようにしました。

void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

// TODO: この場所にネイティブ データ用の描画コードを追加します。
CFont font;
font.CreatePointFont(100, _T(MS 明朝), pDC);

pDC->SaveDC();
pDC->SelectObject(&font);
pDC->TextOut(0, 0, _T(あいうえお));
pDC->RestoreDC(-1);
}

操作画面上では小さい文字はアンチエイリアスはかかりませんが、
印刷プレビュー上では、画面に小さい文字が表示されているにもかかわらず、
アンチエイリアスがかかります。

操作画面上でも、この印刷プレビューのように、
常にアンチエイリアスをかけて描画したいことがあるのですが、
これはどのような原理なのでしょうか。
CDCクラスに対して、「アンチエイリアスをかけろ」とか指示できるのでしょうか。


引用解決済
トピックタグ
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

https://msdn.microsoft.com/ja-jp/library/cc428368.aspx
はどうですか?


返信引用
亀山
 亀山
(@亀山)
ゲスト
結合: 18年前
投稿: 133
Topic starter  

> https://msdn.microsoft.com/ja-jp/library/cc428368.aspx
> はどうですか?

MFCのCreatePointFont()やCreatePointFontIndirect()は、
内部ではCreateFontIndirect()を呼んでいるので、原理的には同じはずです。

ちなみに、lfQualityを明示的にANTIALIASED_QUALITYにしてみたところ、
逆に印刷プレビューでもアンチエイリアスがかからなくなりました。
法則がよくわからないです。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

lfQualityは、フォントによってかかる/かからないがあるようです。
昔そうでした。
VS2008はどうかわかりませんが、「マルチバイト文字」を指定しないとうまくいかない
場合もあるようです。
MFCの関数で指定するのはありましたっけ?

「CreatePointFont」よりも 「CreateFont」の方が効果があったような?
僕は、「CreateFont」を使っています。
趣味の問題かも知れませんが.....


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました