• ベストアンサー

BYTEの配列の扱いについて

すみません、BYTEを初めて利用している者なのですが、 文字列の描画で BYTE* ptr = new BYTE[20480]; と宣言した中に、 GetGlyphOutline() で取得した文字の画像を、1文字ずつ &ptr[0]  &ptr[2000]  &ptr[4000]  &ptr[6000] ・・・ と2000毎に文字を入れ、書き出す時もそうしているのですが、 1文字目はキレイに描画できるのですが、2文字目以降が崩れてしまいます。 変なループが起きたり、文字毎に下に隙間が等倍で増えていく感じです。 これはBYTEの使い方を誤っていて、無理な使い方をしているのでしょうか? また、以前の質問でバイトも配列?が使えると聞いたのですが、 BYTE* ptr = new BYTE[1048 * 10]; これは BYTE* ptr = new BYTE[10480];  これと全く同じ物という意味なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.2

私はGetGlyphOutline() を使ったことがないので一般論しか言えないのです。 参考になるサイトを見つけましたので報告します。 http://and-so-on.blog.so-net.ne.jp/archive/c45391264-1 GetGlyphOutline() は癖があるらしく、使いこなすのが難しそうです。 >BYTE* ptr = new BYTE[1048 * 10]; これは >BYTE* ptr = new BYTE[10480];  これと全く同じ物という意味なのでしょうか? こちらは確信をもって言えます。 まったく同じです。 ソースの可読性を上げるために私もよくやります BYTE* p = new BYTE[1024 * 1024] これなら一目で1MBytesとわかります BYTE* p = new BYTE[1048576] 計算しないとわからないかもしれません でも2つは全く同じです コンパイルするときに1024 * 1024が計算されるので 実行時の速度低下もありません

zaxs5968
質問者

お礼

情報有難うございます。 BYTEの私の使い方そのものは、そう間違ってはいないのですね。 GetGlyphOutline() の利用方法。変えるなりしてみようと思います。 2つ目は可読性だったのですね。 >実行時の速度低下もありません 便利ですね。 有益な情報を本当にありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

GetGlyphOutline は知らないのであてずっぽですが, そこの「2000」の根拠は? 最後の 2つは同じ.

zaxs5968
質問者

お礼

えっと、GetGlyphOutline では画像のサイズを取得してから 再度呼び出して画像を取得するのですが、 17画・16画の漢字と、一やl(エル)等でデータサイズを計測して 十分余裕が有る1500 をさらに余裕を持たせて2000 でした。 説明不足ですいませんでした。 ご回答有難うございます。

関連するQ&A