トップページ > 記事閲覧
非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android)
名前:大和団次郎 日時: 2024/08/23 21:18

Android版 DXライブラリをつかってアプリを作ってます。 以前、非公開の文字ドットパターン取得関数 BltStringSoftImageToHandle を教えてもらい、便利につかっているのですが、小さい文字を表示すると、 各文字の右側がかけて、読めなくなるという問題が生じています 以下のテストプログラムをつくってみたところ Android で実行すると、 フォントサイズが16以下では、各文字の右側が、後ろの文字で消去されるみたいです (Sample の「l」が「e」の左側で消される) BltStringSoftImageToHandle 関数の処理の問題ではないでしょうか フォントの取得の処理の修正がむずかしければ 文字を描画するときに、消去してから文字を書くのではなく OR で上書きするようにすれば、前の文字が消えないように できるのではないでしょうか(文字が重なりますが、まだ読める) #include <stdlib.h> #include <string.h> #include "DxLib.h" int android_main( void ) { if( DxLib_Init() == -1 ){ // DXライブラリ初期化処理 return -1 ; // エラーが起きたら直ちに終了 } DrawBox( 220, 140, 420, 340, GetColor( 255,0,0 ), TRUE ) ; // 四角形を描画する // 16ドット以下の文字を表示するテストプログラム { int nf,sz,fh,sft,xx,yy,y0,x0,col;char *im,data[100]; x0=220, y0=140; for(fh=16;fh>4;fh--) { // fh フォントサイズ sprintf(data,"%d Sample",fh); nf = CreateFontToHandle(NULL, fh, 0, DX_FONTTYPE_NORMAL, -1, -1, FALSE, -1); sz = GetDrawStringWidthToHandle(data, strlen(data), nf, FALSE); sft = MakeSoftImage(sz, fh * 2); if ((im = (char *) GetImageAddressSoftImage(sft))) { memset(im, 0, 4 * sz * fh * 2); // 0 に初期化 BltStringSoftImageToHandle(0, 0, data, sft, -1, nf, FALSE); for (yy = 0; yy < fh * 2; yy++) { // 中身を表示 for (xx = 0; xx < sz; xx++) { if (*(im + 3 + (4 * sz) * yy + xx * 4)) col = GetColor(255, 255, 255); else col = GetColor(0, 0, 255); DrawBox(x0 + xx, y0 + yy, x0 + 1 + xx, y0 + 1 + yy, col, TRUE); } } } y0+=fh*2; } } WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
メンテ

Page: 1 |

Re: 非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android) ( No.1 )
名前:管理人 日時:2024/08/24 03:04

ご指摘ありがとうございます 再現プログラムで手元の環境でも現象を確認できました すみません、Android版で BltStringSoftImageToHandle で文字列のイメージを取得すると 各文字の右側2ドットが欠けるバグがありました 修正版をアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版
メンテ
Re: 非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android) ( No.2 )
名前:大和団次郎 日時:2024/08/24 07:02

すばやい対応、ありがとうございました。 文字の右側がかける問題はなくなりました。ありがとうございました! 対応の速さに感激 1点だけ、X方向は、なおったと思うのですが、同時にY方向も修正されたでしょうか。 前のバージョンから2ドットくらい縦の位置が変わったような気がします。 今回のY方向が正しいのであれば、読み出し側の調整値を修正します
メンテ
Re: 非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android) ( No.3 )
名前:管理人 日時:2024/08/25 02:29

> すばやい対応、ありがとうございました。 > 文字の右側がかける問題はなくなりました。ありがとうございました! 対応の速さに感激 お試し頂きありがとうございます 大和団次郎さんの環境でも問題なく動作したようで何よりです > 1点だけ、X方向は、なおったと思うのですが、同時にY方向も修正されたでしょうか。 > 前のバージョンから2ドットくらい縦の位置が変わったような気がします。 すみません、Y方向は変えるつもりは無かったのですが誤ってY方向の位置も変更してしまっていました 誤って行ってしまったY方向の位置変更を無効化しましたので何度も申し訳ありませんが よろしければこちらをお使いください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibAndroidTest.zip // Android版
メンテ
Re: 非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android) ( No.4 )
名前:大和団次郎(解決) 日時:2024/08/26 14:42

動作確認しました。とてもよくなりました。 ぜひ、今後のバージョンにも反映させていただければと思います ありがとうございました。
メンテ
Re: 非公開文字ドット取得関数 BltStringSoftImageToHandle がおかしい(Android) ( No.5 )
名前:管理人(解決) 日時:2024/08/28 00:31

正常に動作したようで何よりです > ぜひ、今後のバージョンにも反映させていただければと思います はい、本件の変更は次の正式バージョンにも反映されます m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存