連投失礼します。
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クラスに対して、「アンチエイリアスをかけろ」とか指示できるのでしょうか。
> https://msdn.microsoft.com/ja-jp/library/cc428368.aspx
> はどうですか?
MFCのCreatePointFont()やCreatePointFontIndirect()は、
内部ではCreateFontIndirect()を呼んでいるので、原理的には同じはずです。
ちなみに、lfQualityを明示的にANTIALIASED_QUALITYにしてみたところ、
逆に印刷プレビューでもアンチエイリアスがかからなくなりました。
法則がよくわからないです。
lfQualityは、フォントによってかかる/かからないがあるようです。
昔そうでした。
VS2008はどうかわかりませんが、「マルチバイト文字」を指定しないとうまくいかない
場合もあるようです。
MFCの関数で指定するのはありましたっけ?
「CreatePointFont」よりも 「CreateFont」の方が効果があったような?
僕は、「CreateFont」を使っています。
趣味の問題かも知れませんが.....