死に鯛 orz - 私はコレで168時間を無駄にしました

相変わらず java 関連の印刷でつまずいています。(draw2d を利用)

諸事情で、キャンバスに文字を描画した際の「文字の高さ」を知りたかったのですが、どーーーーーしてもおかしい値しか取れずで四苦八苦していた*1のです。

…しかし、おいらは気づいてしまった。もうなんというかね。もうね。



win32api で書くとですね。こんな感じ。

/**
 *  リソースの解放とか、エラー処理とかしてないけど
 *  サンプルって事で許して
 *  →よい子はまねしちゃ "ダ・メ・だ・ぞ♪"
 */
class CFontSizeGetter
{
  HFONT hFont;
public:
  void CFontSizeGetter()
  {
    hFont = ::CreateFont(_T("Osaka"));
  }

  /**
   * font の高さを取得する
   */
  int GetFontHeight()
  {
    HDC   hDC = GetHogeDC();
    SIZE  size;
    const TCHAR kana[] = _T("かしらッ!");

    ::GetTextExtentPoint32(hDC, kana, ARRAY_SIZE(kana), &size);
    // ※↑で、hDCに関連付いてる font って何よ?

    return size.y;
  }
}


ばかあああああああああああああああああああああああああああああ!! orz



こうさ、印刷関連は経験薄い領域だし、何がおかしい状態か不明な状況だからさ「PrinterDC と DisplayDC 間で DPI が違う故に何か問題が起きてるのかしら…?」 とかさ「Javaの印刷ライブラリ側で、全体をスケーリングしている故に、各種大きさがずれている…? となると、こっち側でスケーリングの逆数を掛ければあるいは……」とかさ、いろんな座標空間・単位が入り乱れている故に、いろんな所確認して他のにさ。もうさ。なんというかさ


ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

λ......

*1:……いや正確には、目的の処理結果にならずにいろいろな所を試行錯誤していた