ペンの選択について

[戻る]
たっく [E-Mail] 2002/03/25(月) 12:55:35
いつもお世話になります。
開発環境はVC++6.0、SDI、OS:windows98です。

OnDraw関数で座標(1000〜2000ぐらい)を取得して、
線と文字を描写させるためにOnDraw関数以下のように記述しています。

void C***View::OnDraw(CDC* pDC)
{
<省略>
  CFont Font;
    Font.CreateFont(**,**,**,**,・・・・);
    CFont*pOldFont = (CFont*) pDC->SelectObject(&Font);

  for(i=0,i<gl_zahyou; i++){
       (ここで座標に線を描写しています)
       //座標に文字を出力する
    pDC->TextOut(point.x,point.y,text)//pointはCPoint、textはCStringです。
    }
    pDC->SelectObject(pOldFont); 
}

ここまではうまくいきました。
次に文字を線の角度に合わせて文字の角度をつけようとして以下のようにしました。
void C***View::OnDraw(CDC* pDC)
{
<省略>
  CFont Font;
    Font.CreateFont(**,**,**,**,・・・・);

  for(i=0,i<gl_zahyou; i++){
      Font.CreateFont(**,**,**,**,・・・・);
      CFont*pOldFont = (CFont*) pDC->SelectObject(&Font);
       (ここで座標に線を描写しています)
       //座標に文字を出力する
    pDC->TextOut(point.x,point.y,text)//pointはCPoint、textはCStringです。
    }
    pDC->SelectObject(pOldFont); 
}

コンパイルして実行するとプログラムが止まってしまいます。
(Font.CreateFontのところでとります。)
本をよんでも解決方法がなくて困っています。
どなたかアドバイスお願いします。

不良PG 2002/03/25(月) 13:04:21
CFont::CreatePointFontのヘルプを見ましたか?

作ったら削除しましょう


修正するとしたらこんな感じですね

void C***View::OnDraw(CDC* pDC)
{
<省略>
  CFont Font;

  for(i=0,i<gl_zahyou; i++){

      Font.CreateFont(**,**,**,**,・・・・);
      CFont*pOldFont = (CFont*) pDC->SelectObject(&Font);
       (ここで座標に線を描写しています)
       //座標に文字を出力する
    pDC->TextOut(point.x,point.y,text)//pointはCPoint、textはCStringです。
    pDC->SelectObject(pOldFont);
    Font.DeleteObject();
    }
}

不良PG 2002/03/25(月) 13:05:45
あっ訂正(^^;

誤)CFont::CreatePointFontのヘルプを見ましたか?
正)CFont::CreateFontのヘルプを見ましたか?

たっく [E-Mail] 2002/03/25(月) 14:28:47
[[解決]]
不良PGさんありがとうございます。
DeleteObjectで削除していたんですが、
位置がずれていました。。。単純ミスです。
void C***View::OnDraw(CDC* pDC)
{
<省略>
  CFont Font;

  for(i=0,i<gl_zahyou; i++){

      Font.CreateFont(**,**,**,**,・・・・);
      CFont*pOldFont = (CFont*) pDC->SelectObject(&Font);
       (ここで座標に線を描写しています)
       //座標に文字を出力する
    pDC->TextOut(point.x,point.y,text)//pointはCPoint、textはCStringです。
    pDC->SelectObject(pOldFont);
    }
  Font.DeleteObject();
}
お騒がせいたしました。。。

でもfor文のなかでフォントを持ち替えると相当動作が遅くなりますね。
なにか良い方法ご存じないですか?

不良PG 2002/03/25(月) 14:55:03
ケースバイケースだと思いますが

先にフォントを作って置いて
for文の中で切り替えれば、多少は速くなるでしょう。

古いスレッドには追加発言できません。