C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 分数を/を使わず上下に表示する方法


(過去ログ 134 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■79393 / inTopicNo.1)  分数を/を使わず上下に表示する方法
  
□投稿者/ poco (1回)-(2016/03/29(Tue) 19:19:41)

分類:[VB.NET/VB2005 以降] 

初心者で、また、質問も初めてなので、質問内容に不備があったら申し訳ありません。

VB2010を使用してラベルに分数を表示したいのですが、
表示する際、A/Bではなく、数学で使うように表示したいと思っています。

例えば、
a+b−a/b    ではなく、

.     a
a+b−----
.     b

みたいな感じに表示したいと思っています。

ラベルを三行準備して、上記のようにAAで表示するくらいしか思いつかないのですが、
何かスマートな方法があるでしょうか。

引用返信 編集キー/
■79395 / inTopicNo.2)  Re[1]: 分数を/を使わず上下に表示する方法
□投稿者/ ジャン (1回)-(2016/03/30(Wed) 10:17:02)
手っ取り早い方法としては、
お絵描きソフトで分数式が描かれた画像を作成し、
PictureBoxにそれに表示する方法ですが、
プログラム内で分数式の内容を変更したい場合は、
オーナードローを使う方法があります。
この方法だと、前者よりも綺麗に表示されますが、
難易度は高くなります。
引用返信 編集キー/
■79396 / inTopicNo.3)  Re[1]: 分数を/を使わず上下に表示する方法
□投稿者/ shu (854回)-(2016/03/30(Wed) 10:24:34)
No79393 (poco さん) に返信

Graphicsを取得して自分で描画するとか

数式表示用のコントロールを手に入れるとか
引用返信 編集キー/
■79397 / inTopicNo.4)  Re[1]: 分数を/を使わず上下に表示する方法
□投稿者/ 魔界の仮面弁士 (673回)-(2016/03/30(Wed) 10:39:02)
2016/03/30(Wed) 10:40:20 編集(投稿者)

No79393 (poco さん) に返信
> 初心者で、また、質問も初めてなので、質問内容に不備があったら申し訳ありません。

今回の案件は、実現難易度が高めだと思います。


> ラベルを三行準備して、上記のようにAAで表示するくらいしか思いつかないのですが、

Label だと、改行または複数のラベルで表現するぐらいが限界だと思います。



> VB2010を使用してラベルに分数を表示したいのですが、

ラベルだけでは、Office 付属の「Microsoft 数式エディタ」のような表現は無理でしょう。

C:\Program Files (x86)\Common Files\microsoft shared\EQUATION\EQNEDT32.EXE
https://support.microsoft.com/ja-jp/kb/881775
https://support.office.com/ja-jp/article/6eac7d71-3c74-437b-80d3-c7dea24fdf3f


数式の内容を、プログラムから動的に指定する必要があるのなら、
PictureBox の Paint イベントを利用して、e.Graphics に対して
座標指定で線や数字を描画していくぐらいしかありません。
初心者が手を出すには、かなり面倒なコードになるでしょう。


もしも数式の内容が固定的なのであれば、Word の数式エディタで作成した数式をコピーし、
それを PictureBox に「画像」として貼り付けておくという手もありますけれどね。


なお、実行時にユーザーに数式を編集させる必要があるのなら、
こういったものがあります。


WinForm 用数式エディタコンポーネント(有償製品:体験版あり)
http://othercontrols.com/en/products/mathexpressioneditorlight/

 'ユーザー入力用パレットを表示
 Me.MathControl1.Palette.Visible = True
 '数式を表示
 Me.MathControl1.LoadFromString("a+b-a/b")


VB.NET 2003 WebApp サンプル & C# 2003 WinForm サンプル
http://www.codeproject.com/Articles/11406/Enable-Your-Users-to-Write-Math-Equations-in-Your

 マイムテフ(MimeTeX)の DLL を利用しているようです。
 数式は画像として取得されるようですが、当方環境では
 VB2010 で動かせるようにはできませんでした。


WPF 版 C# ソース付き 数式エディタソフト
https://github.com/kashifimran/math-editor

 今回の要件には合わないと思いますが、参考情報として。
引用返信 編集キー/
■79399 / inTopicNo.5)  Re[2]: 分数を/を使わず上下に表示する方法
□投稿者/ shu (855回)-(2016/03/30(Wed) 11:07:56)
No79396 (shu さん) に返信

Graphicsを取得して自分で描画する例:

    Private Sub Label1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint
        Dim g = e.Graphics

        Using fnt = New Font("MS ゴシック", 10.5!, FontStyle.Regular)
            g.DrawString("c", fnt, Brushes.Black, 50, 0)
            g.DrawString("a + b - ", fnt, Brushes.Black, 0, 10)
            g.DrawString("d", fnt, Brushes.Black, 50, 20)
            g.DrawLine(Pens.Black, 50, 20, 60, 20)
        End Using

    End Sub

実際は数式に合わせて座標や描画要素を変える必要があるかと思います。

引用返信 編集キー/
■79403 / inTopicNo.6)  Re[2]: 分数を/を使わず上下に表示する方法
□投稿者/ poco (3回)-(2016/03/30(Wed) 19:16:02)
練習でお絵かきソフト作ったのに、Graphicsの存在すら忘れてました。

というか、予想してましたが、やはり便利なものはないんですね・・・

No79399にて書いていただいたものを参考にちょっとやってみます。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -