質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

Q&A

解決済

1回答

3193閲覧

[C#]Drawing.Fontに設定されているfontfamilyのcellDescentを取得したい。

makiikeda1216

総合スコア128

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

font

近年は、コンピュータ上、紙面上で利用できる書体データのことをfontといいます。数える時の単位は「書体」で、データとしてのフォントは、デジタルフォントと呼ばれる場合があります。 HTML/CSSでは要素を指定し、フォント情報を調整することができます。

0グッド

0クリップ

投稿2015/11/16 04:27

編集2015/11/16 08:26

C#でDrawing.Fontを使ってCanvasにテキストを描画しているのでが、その際にそのフォントに設定されているfontfamilyのcellDescentプロパティからDescentを取得しようとすると以下のようなメッセージが表示され、Descentが取得できません。

FontFamily {Name = 名前 'name' は現在のコンテキスト内に存在しません。} System.Drawing.FontFamily

どなたかDescentを取得できる方法もしくは、代替案などをご存知の方がいっらっしゃいましたらご教授ください。

以下、Descentを取得しようとしているコード

FontFamily fontfamily = new FontFamily("Arial");//case1 Font font = new Font("Arial", 16, FontStyle.Regular, GraphicsUnit.Pixel);//case2 int cellDescent_fontfamily = font.FontFamily.GetCellDescent(FontStyle.Regular);//case1のDescentが取得できない int cellDescent_font = font.FontFamily.GetCellDescent(FontStyle.Regular);//case2のDescentが取得できない

追記

開発環境
Windows 7
Visual Studio 2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと試してみましたが、ちゃんと取れていますよ。手元の環境では434が返されます。
GetEmHeightメソッドは2048を返しているので、16ピクセルを指定して作ったフォントのディセントは、約3.4ピクセルということになります。

FontFamily {Name = 名前 'name' は現在のコンテキスト内に存在しません。}
これはデバッガーの表示ですよね。たぶん、何らかの理由で名前が解決できていないのだとおもうのですが……、よく判りません。

投稿2015/11/16 07:38

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makiikeda1216

2015/11/16 08:22

catsforepawさん 回答ありがとうございます。 >>これはデバッガーの表示ですよね はい、デバッグで途中でとめて中身をたしかめたところFontfamilyの中身がそのようになっていました。 だとしたらデバッグを行っている私の環境に問題があるかもしれないので少し調べてみます。 OSかIDEのどちらかだと思うのでいろいろやってみます。
catsforepaw

2015/11/16 08:29

私のところでも起こっていますので、makiikeda1216さんの環境に固有の問題というわけではないと思います。とりあえず、オブジェクト内のプロパティの値などは参照できているのであまり気にしていませんでしたが。
makiikeda1216

2015/11/16 08:53

Descentが取れました! 原因はアルファベットを設定する際に半角で Font font = new Font("Arial", 16F);と入れてたんですが、 Font font = new Font("Arial", 16F)と全角にしたら取得できました! 質問に付き合っていただきありがとうございました!
catsforepaw

2015/11/16 09:01

ちょっと不思議ですね。私はご質問のコードをそのままコピペして試して、ちゃんと取れていることを確認したのですが……。 まぁ、とりあえず取れたということでよしとしましょうか。
makiikeda1216

2015/11/16 09:13

半角でもう一度ためしたら動きました.... どうやら int cellDescent_fontfamily = font.FontFamily.GetCellDescent(FontStyle.Regular); int cellDescent_font = font.FontFamily.GetCellDescent(FontStyle.Regular); を宣言した直後にブレークポイントをとめて出力せずに変数の中身をチェックしていたので、 上のメッセージが表示されて中身が何も入っていないと勘違いをしてみたいですOTL
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問