トップページ > 記事閲覧
DrawObtainsString_CharClipについて
名前:たろう 日時: 2023/12/20 15:48

いつもすみません、たろうです。またすみません DrawObtainsString_CharClipを使っているのですが、 長いテキストをSetDrawAreaで指定した範囲に描画して、何度か改行された末に、 描画範囲を下にはみ出した場合に、ページ送りして そのはみ出した以降のテキストを表示したいと思います。 @例えば改行された回数などが分かれば実現できると思うのですが そういうことは可能でしょうか? 使用方法としては 1.用意した大きいMakeScreenにDrawObtainsString_CharClipで文字を全て描く 2.範囲に収まる、例えば3行なら3行分だけDrawRectRotaGraph3Fで描画 3.ページごとに3行ずつDrawRectRotaGraph3FのSrcYをずらして、改行回数に達するまで繰り返す ・・・などと使いたいと思います。 もしくは他の方法で可能でしたら教えていただけると助かりますm(__)m A英語版にする場合に使うのですが、 単語途中で改行されずにスペースやピリオド等、 単語の切れ目で改行されるような事は可能でしょうか? (次の単語の横幅が範囲を超える場合は、そのひとつ前の単語後に 改行してしまうような) どちらも、実現が難しいようでしたら他の方法で進めます 可能であればで構いません。 よろしくお願いいたしますm(__)m
メンテ

Page: 1 |

Re: DrawObtainsString_CharClipについて ( No.1 )
名前:管理人 日時:2023/12/22 01:12

> @例えば改行された回数などが分かれば実現できると思うのですが > そういうことは可能でしょうか? 現状では改行された回数を取得する手段は無いので、DrawObtainsString_CharClip に行数を取得するための引数を追加しました // 描画可能領域に収まるように改行しながら文字列を描画( クリップが文字単位 ) int DrawObtainsString_CharClip( int x, int y, int AddY, char *String, unsigned int StrColor, unsigned int StrEdgeColor = 0, int FontHandle = -1, unsigned int SelectBackColor = 0xffffffff, unsigned int SelectStrColor = 0, unsigned int SelectStrEdgeColor = 0xffffffff, int SelectStart = -1, int SelectEnd = -1, int *LineCount = NULL ) ; 何やら引数が多いですが、追加したのは末尾の int *LineCount です こちらに int型の変数のアドレスを渡すと、文字列の行数が代入されます( 改行された数ではありませんのでご注意ください ) > A英語版にする場合に使うのですが、 > 単語途中で改行されずにスペースやピリオド等、 > 単語の切れ目で改行されるような事は可能でしょうか? はい、可能です 半角スペースやタブ文字で区切られた単語の途中で改行することになった場合は単語全体が次の行に描画されるようにする関数 DrawObtainsString_WordClip を追加しました // 描画可能領域に収まるように改行しながら文字列を描画( クリップが単語単位 ) int DrawObtainsString_WordClip( int x, int y, int AddY, char *String, unsigned int StrColor, unsigned int StrEdgeColor = 0, int FontHandle = -1, unsigned int SelectBackColor = 0xffffffff, unsigned int SelectStrColor = 0, unsigned int SelectStrEdgeColor = 0xffffffff, int SelectStart = -1, int SelectEnd = -1, int *LineCount = NULL ) ; @の引数追加と、Aの関数追加を施した暫定最新バージョンをこちらにアップしましたので、よろしければお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: DrawObtainsString_CharClipについて ( No.2 )
名前:たろう 日時:2023/12/22 08:49

いつもありがとうございますm(__)m 早速色々ためさせていただきましたところ、 ご確認いただきたい問題が発生してしまいました。 以下のようにすると3行であるにもかかわらず2行と表示されて 尚且つ、末尾に「□」や「'D」などの文字がチカチカ点滅します。 何度もお手数をおかけしてして、いつもスミマセンm(__)m -------------------------------------------- #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; DxLib_Init(); SetDrawScreen( DX_SCREEN_BACK ); int nb=0,font=CreateFontToHandle("Arial",12,9,0); while( ProcessMessage() == 0 ) { ClearDrawScreen(); SetDrawArea(0,0,270,100); DrawBox(1,1,269,99,GetColor(255,0,0),0); const char* st="aaa aaaaaaa aaa aaaaaaaaaaa aaaaaaaa, aaaaaaaa aaaaaaaaa, aaaaaaa aaaaaaa, aaa aaaa aaaa aaaaaaa aaaa aa aaaaa."; DrawObtainsString_WordClip(0,0,17,st,GetColor(255,255,255),0U,font,0U,0U,0U,-1,-1,&nb); SetDrawAreaFull(); DrawFormatString( 300,30,GetColor(255,255,255),"行数:%d",nb); ScreenFlip(); } DxLib_End() ; return 0 ; }
メンテ
Re: DrawObtainsString_CharClipについて ( No.3 )
名前:管理人 日時:2023/12/22 22:18

バグがあったようですみません > 以下のようにすると3行であるにもかかわらず2行と表示されて 修正しました > 尚且つ、末尾に「□」や「'D」などの文字がチカチカ点滅します。 こちらは手元では再現しませんでしたが、恐らく原因と思われる箇所を修正できたと思います お手数で申し訳ありませんが、よろしければこちらの修正版をお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 11.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: DrawObtainsString_CharClipについて ( No.4 )
名前:たろう(解決) 日時:2023/12/22 23:30

いつもありがとうございますm(__)m 行数も正確で、点滅もなくなりましたm(__)m また今回も無理を言ってしまい 大変お手数をおかけいたしました。 ありがとうございましたm(__)m
メンテ

Page: 1 |

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

   クッキー保存