• 締切済み

C++ Builder XE

C++ Builder XEでBitmapの上に文字を書こうとしていますが例えば bmp->Canvas->FillText(rect, "Are you?", false, 100, TFillTextFlags() << TFillTextFlag::RightToLeft, TTextAlign::Center, TTextAlign::Center); と書くと「Are you?」と表示されて欲しいのに「?Are you」と表示されてしまいます。 解決方法を知っているかたがいましたら教えてください。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>TFillTextFlags() << TFillTextFlag::RightToLeft, これって必要ですか?? C#やWindowsAPIで同様のフラグを使ったことはないのですが… "Are you?"は右から左に書くと"?Are you"になるんですかね? # C#ならそれほど掛からずに試せそうではありますが…未確認。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C++Builder XE とOpenCV

    長年C++Builderでプログラムを書いていますが、いつも全体をコピーして必要な所を変更しているので、開発環境の作成には自信の無い者です。 背景 昨年来、OpenCVとDirect-Xでカメラと画像のプログラムを開発していました。 今年2月にC++ Builder V5 とOpenCV V1.0 Direct-X9 で目的の動作をするものが完成しました。 W.2000とW.XPが対象ならばこれで良いのですが、世の中のOSがW.7に移っており、古いOSのPCの販売も無くなって来ている所から、W.7への乗せ替えを計画しました。 なお、OpenCV V1.0を使用しているのは、OpenCVでの開発開始当時、V2も試したのですが、V1.0でしかうまくコンパイル出来なかった為です。 問題点 新しい開発環境はOS W.7にC++Builder XEを搭載しました。 Builder V5に比べ、XEは文字コードがUniCodeに成っている等、文法エラーが多発していましたが、やっと文法エラーが無くなり、コンパイルが終了しました。 ここで実行させようとした所、cvhaartraining.dll がありませんとのメッセージが表示されてしまいました。 このメッセージはW.XP と C++Builder V5でコンパイル、実行させた時には出なかったものです。 更に、ダウンロードしたOpenCV1.0にはcvhaartraining.dllが含まれて居ませんでした。 ただ、cvhaartraining.cpp、cvhaartraining.lib 、cvhaartraining.h は含まれていました。 ネットでcvhaartraining.dllを検索して見ましたが、見つかりませんでした。 そこで、cvhaartraining.cpp、cvhaartraining.lib 、cvhaartraining.h があるのですから、これからDLLを作るか、プログラムが動作すれば良いのですから、プログラムに組み込んだり出来ないでしょうか。 先に述べた様に、開発環境やプログラム構造を変えた経験は殆ど無いのですが、この問題の解決策があれば挑戦して見たいと思って降ります。 解決策お分かりに成る方が居られましたら宜しくお教え下さい。

  • C++ builder text

    C++ builder で例えばTRectangleで背景を作った後TTextで文字を書いたとき、 Text1->Text="AAAAA";Text1->Text="BBBBB";Text1->Text="CCCCC"; とボタンか何かで順次変化させればそのままAAAAA BBBBB CCCCCと文字が 正しく表示されるのですが TRectangleのRectangle1->Canvas->FillTextで文字を書いたときはAAAAAの上にBBBBB、CCCCCと重なって書かれてしまうのですがText1->Textにできないでしょうか? Canvas->Clear()とかでは真っ黒になってしまいます。 ようは背景をそののままで文字だけ変化するようにしたいのですが方法分かりますか?

  • C++ Builder でVisibleとshow

    こんにちは、王次郎です。 C++ Builder でコンポーネントの表示/非表示を切り替えるときに メンバ関数の Show()/Hide() を呼ぶ方法と プロパティの Visible を True/False にする方法がありますが、 どう違うのでしょうか?どちらが良いのでしょうか? よろしくお願いします。

  • C# 画像ファイルの更新

    C#を始めて2ヶ月余りの者です。 環境はW.7 C#.NET 2013です。 現在、以前C-Builderで作成したプログラムをC#に変換して居ます。 画像マスターを変更する所で、コンパイル出来なく成り、困って居ます。 やりたい事は、画像マスターがあり、これを表示して、マスターを変更したければカメラから読み込んだ画像を画像マスターに書き込むと言うものです。 C-Builderの時はBMPの読み書きは自分で作成しましたが、C#では関数があるので今回はこれを利用しました。 内容を簡略的に下に記述しました。AAAが画像マスターでBBBがカメラからの画像の代わりです。 ここで bmpSource1.Save(sCurDir + "\\BBB.bmp"); を実行すると、「別のプロセスで使用されているため、プロセスは ファイル~にアクセスできません。」とのエラーが表示されます。 良く考えてみれば、Readでオープンしている所に書き込もうとして居るのでエラーに成って当たり前ですので、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");の後に画像を別の場所に保存し、bmpSource1.Dispose();としてみた所、上手く行きませんでした。これもDisposeするのはバッファーであり、ファイルでは無いから当たり前かも知れません。 ネットで色々探して居る時に、何かのパラメーターでReadWriteモードの所を見つけましたが、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");には指定するパラメーターが見当たりませんでした。 何方か、画像ファイルの更新方法がお分かりに成る方、ご教授下さい。 よろしくお願い致します。 String sCurDir = System.IO.Directory.GetCurrentDirectory(); Bitmap bmpSource1; Bitmap bmpSource2; public Form1() { InitializeComponent(); pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp"); bmpSource2 = new Bitmap(sCurDir + "\\BBB.bmp"); pictureBox1.Image = bmpSource1; bmpSource2.Save(sCurDir + "\\AAA.bmp"); <-ここで実行時エラー }

  • 指定領域に文字を表示させる方法について

    C++Builder5.0でソフトを作成しているのですが、 任意で設定した四角形の中にその領域にあったフォントでセンター表示したいのですがそのような事は出来るのでしょうか? したい事の例としては (1)四角形を作成(Canvas->Rectangleを使用) (2)Editボックスに文字を入力してもらう (3)縦横の幅の広い方向に対して入力した文字を(1)で指定した領域に合うフォントサイズでセンター表示する

  • C-Builderで数値(数字)以外を入力出来ない様にしたい。

    C-Builder V5 で数値(数字)を入力すべきところで、実行時に文字等を入力すると、システムからエラーメッセージが表示されるので、これを防ぐ為にEditで入力時に数字以外をはじきたいのですが、可能でしょうか。 以前C-Builder V4で作った時は出来た様な気がしたのですが、どの様にやったか思い出せないでいます。 ネットではC-Builderのサンプルが見つからず、Delphiのサンプルでは昔の記憶と同じ処理を行っていましたが、これだと文字判定以前にEditの枠に既に文字が入ってしまっており、文字の排除が出来ませんでした。 どなたか数字以外をはじく方法ご存知の方、お教え下さい。 // Edit1->ImeMode = imDisable; // 初期化部分で実行 void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if(Key<48 || Key>57) { Key = 0; } }

  • C++ Builderでユニットの追加

    趣味でプログラミングを行ってますCerapodaと申します。 Builderを使って1つのFormと1つのCpp,hファイルを使ったプログラミングならある程度のところまで出来ると思っているのですが 以前違うプロジェクトで作った関数を新たなプロジェクトで使おうとして いちいちコピー&ペーストするのも大変なので ひとつのユニット&ヘッダーファイルとしてインクルードして使いたいなと思いました。 そこで http://www.osakac.ac.jp/labs/matsuura/japanese/program/C++Builder/Project/projectManyForm.htm このページを参考にしてUnit1とUni2を作成し Unit2に double Analysis::Function(double val) { return(1.0-val); } の関数を追記。 Unit1のcppに C.Function(0.5); と書き加えたのですが [リンカ エラー] 外部シンボル '_C' が未解決… とエラーが表示されてしまいます。 どこに問題があるのか教えていただければ幸いです。 情報が足りない場合は、補足しますのでよろしくお願いします。 また、このような作業で参考になるサイト,URL等ありましたら教えていただけると幸いです。 よろしくお願いします。

  • C++Builderプログラム開始エラー

    C++Builder6で作成した実行ファイルとdllファイル)とを別のWindows上で動作させようとするとエラーが出ます。共有RTLDLLを使う、実行時パッケージを使って構築の両方に関して、チェックを入れたりはずしたりしていますが、解決しません。 エラーの表示は、「!プログラム開始エラー」のみです。特に、何が配布漏れなのかを知る手段を教えてください。

  • Borland C++Builder 5環境での開発学習

    お世話になっております。 今回、初めて「Borland C++Builder 5」を使用してプログラム開発をするのですが、予算の関係で書籍の購入はできるだけしたくありません。 どこかに入門的な学習ができるようなサイトがあれば教えていただけないでしょうか? 例えばボタンを押したら、文字を表示したり、画面の色が変わる程度の簡単なもので構わないです。 「そんなサイトはない。本を買えって!!」ことなら、お奨めの書籍を教えてくださいませんか?できればあまり高くないものがいいのですが。

  • C-Builder OnChangeをマスク

    C-BuilderでEditのデーターが変化した時、ある処理をしています。 その処理の中で、入力内容が正しく無い時はエラーメッセージを表示させ、Editの内容を入力された以前の状態に戻して居る為、その状態でも再度OnChangeイベントが発生してしまいます。 現在はbInhibitフラグを作って、これをルーチン内でtrueにする事で、再度OnChangeイベントが発生した時にルーチンの最初でreturnさせて二重割り込みを防ごうとしていますが、タイミングによっては二重割り込みが発生してしまいます。 これが内部での変更で無ければ Edit1->Enabled = false; とする事により、二重の割り込みは防げますが、今回はEdit1Changeの中で書き換えを行っている為、これでは二重割り込みを防げません。 何か二重割り込みを防ぐ方法がありましたらお教え下さい。 宜しくお願い致します。 bool bInhibit = false; void __fastcall TForm1::Edit1Change(TObject *Sender) { if( bInhibit == true ) return;   bInhibit = true;   -------- bInhibit = false; } }