- ベストアンサー
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]; これと全く同じ物という意味なのでしょうか?
- みんなの回答 (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が計算されるので 実行時の速度低下もありません
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
GetGlyphOutline は知らないのであてずっぽですが, そこの「2000」の根拠は? 最後の 2つは同じ.
お礼
えっと、GetGlyphOutline では画像のサイズを取得してから 再度呼び出して画像を取得するのですが、 17画・16画の漢字と、一やl(エル)等でデータサイズを計測して 十分余裕が有る1500 をさらに余裕を持たせて2000 でした。 説明不足ですいませんでした。 ご回答有難うございます。
お礼
情報有難うございます。 BYTEの私の使い方そのものは、そう間違ってはいないのですね。 GetGlyphOutline() の利用方法。変えるなりしてみようと思います。 2つ目は可読性だったのですね。 >実行時の速度低下もありません 便利ですね。 有益な情報を本当にありがとうございました。