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

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

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

フォントの取得


(過去ログ 6 を表示中)

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

■6185 / inTopicNo.1)  フォントの取得
  
□投稿者/ 初心者 二等兵(7回)-(2006/08/31(Thu) 19:57:44)

分類:[C#] 


分類:[C#] 

こんにちは。C#の初心者です。

現在、richTextBoxを使用したアプリケーションを作成しているのですが、
入力した文字列のフォントを1文字ずつ取得するメソッドが必要になりました。

for(int i = 0; i < richTextBox.SelectionLength; i++)
{
richTextBox.Select(i, 1);
Font tempFont = richTextBox.SelectionFont;
......
}

のようなイメージで1文字ずつ取得していきたいのですが、この方法だと、
画面に1文字ずつ選択していく残像というか、ちらつきが出てしまいます。

文字を選択しないで、フォントを取得できればベストなのですが、それが
不可能の場合、何か良い方法はないでしょうか?

VBAでいう、ScreenUpdating みたいな方法があれば良いのですが…

何か良いお知恵をお貸しください!
よろしくお願いします。

0
引用返信 編集キー/
■6205 / inTopicNo.2)  お知恵を授けてください!
□投稿者/ 初心者 二等兵(8回)-(2006/09/01(Fri) 19:24:02)

分類:[C#] 

やっぱり、無理なんですかねぇ。
イメージとしては、ワードパットみたいな機能を実装したいのですが…。

0
引用返信 編集キー/
■6207 / inTopicNo.3)  Re[2]: お知恵を授けてください!
□投稿者/ ダッチ 二等兵(1回)-(2006/09/01(Fri) 23:00:29)

分類:[C#] 

ダッチです。はじめまして。

> VBAでいう、ScreenUpdating みたいな方法があれば良いのですが…
VBA は使ったことはありませんが、
Win32 API の SendMessage で WM_SETREDRAW を送って
再描画を止めてみてはどうでしょうか。

また、非表示の RichTextBox を用意して、
そちらで処理を行うというのでもいけると思います。



0
引用返信 編集キー/
■6210 / inTopicNo.4)  Re[3]: お知恵を授けてください!
□投稿者/ Blue 軍曹(61回)-(2006/09/01(Fri) 23:28:32)

分類:[C#] 

メモリストリームを用意して、rtfを解析してみては、と思ったけど結構大変そう。。。

0
引用返信 編集キー/
■6220 / inTopicNo.5)  Re[3]: お知恵を授けてください!
□投稿者/ 初心者 二等兵(9回)-(2006/09/02(Sat) 10:56:21)

分類:[C#] 

返信ありがとうございました。

> また、非表示の RichTextBox を用意して、
> そちらで処理を行うというのでもいけると思います。

なるほど、そういう手がありますね。しかもそんなに難しくなさそうです。

やっぱり、一般的な方法ってないんですかね。

0
引用返信 編集キー/
■6221 / inTopicNo.6)  Re[4]: お知恵を授けてください!
□投稿者/ 初心者 二等兵(10回)-(2006/09/02(Sat) 11:30:04)

分類:[C#] 

No6210に返信(Blueさんの記事)
> メモリストリームを用意して、rtfを解析してみては、と思ったけど結構大変そう。。。

返信ありがとうございました。

そうですね。本当はそれが一番スマートな方法ですね。
少し考えてみたいと思います。

0
引用返信 編集キー/
■6255 / inTopicNo.7)  RTFと日本語の変換について
□投稿者/ 初心者 二等兵(11回)-(2006/09/04(Mon) 17:21:36)

分類:[C#] 

RTFを日本語に変換する方法、かつその逆の方法を教えてください。

例えば、「MS Pゴシック」はRTFで表現すると:
\'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e
となるようですが(?)これをC#で変換して導き出す方法を教えてください。

また、この辺のことが詳しく解説しているURLとか教えて頂けると
大変助かります。

よろしくお願いします!

0
引用返信 編集キー/
■6258 / inTopicNo.8)  Re[5]: RTFと日本語の変換について
□投稿者/ 魔界の仮面弁士 少尉(129回)-(2006/09/04(Mon) 18:45:02)

分類:[C#] 

> \'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e
> となるようですが(?)これをC#で変換して導き出す方法を教えてください。
直接変換するためのクラスが用意されているかどうかはわかりませんが、
System.Text.Encoding クラスを使えば、双方向変換を実装可能だと思います。

たとえば、"MS Pゴシック" から "82-6C-82-72-20-82-6F-83-53-83-56-83-62-83-4E"
という文字列を得るために、以下のようなコードを利用できます。

System.BitConverter.ToString(System.Text.Encoding.GetEncoding(932).GetBytes("MS Pゴシック"))


> また、この辺のことが詳しく解説しているURLとか教えて頂けると
> 大変助かります。

Description of the changes to the Rich Text Format (RTF) Specification, version 1.8 for Word
http://support.microsoft.com/kb/922681/en-us

Rich Text Format (RTF) Specification, version 1.8
http://www.microsoft.com/downloads/details.aspx?familyid=AC57DE32-17F0-4B46-9E4E-467EF9BC5540&displaylang=en

Rich Text Format (RTF) Specification, version 1.7
http://www.microsoft.com/downloads/details.aspx?FamilyID=e5b8ebc2-6ad6-49f0-8c90-e4f763e3f04f&DisplayLang=en

Rich Text Format (RTF) Specification, version 1.6
http://msdn.microsoft.com/library/en-us/dnrtfspec/html/rtfspec.asp


0
引用返信 編集キー/
■6302 / inTopicNo.9)  ありがとうございました
□投稿者/ 初心者 二等兵(13回)-(2006/09/05(Tue) 15:40:26)

分類:[C#] 

皆さんに色々とお知恵を貸して頂いたおかげで、RTFを正規表現で検索し、
直接書き換えることで、希望通りの機能を付けることができました。

色々と教えて頂いて、ありがとうございました。

また何かありましたら、よろしくお願いします。

解決済み
引用返信 編集キー/
■6310 / inTopicNo.10)  Re[7]: ありがとうございました
□投稿者/ ダッチ 二等兵(3回)-(2006/09/05(Tue) 22:41:58)

分類:[C#] 

>皆さんに色々とお知恵を貸して頂いたおかげで、RTFを正規表現で検索し、
>直接書き換えることで、希望通りの機能を付けることができました。

できればどのような正規表現を作成したのか教えていただけませんか。
私も RTF の操作には非常に興味があるため、
どのようにされたのかが気になります。

0
引用返信 編集キー/
■6311 / inTopicNo.11)  Re[8]: ありがとうございました
□投稿者/ ダッチ 二等兵(4回)-(2006/09/05(Tue) 22:45:41)

分類:[C#] 

ごめんなさい。
投稿したら解決チェックが外れてしまいました。
編集しようにもどうしたらいいのかわかりません。

解決チェックを入れます。



解決済み
引用返信 編集キー/
■6315 / inTopicNo.12)  Re[8]: ありがとうございました
□投稿者/ 初心者 二等兵(14回)-(2006/09/06(Wed) 09:29:05)

分類:[C#] 

2006/09/06(Wed) 09:29:22 編集(投稿者)

> できればどのような正規表現を作成したのか教えていただけませんか。
> 私も RTF の操作には非常に興味があるため、
> どのようにされたのかが気になります。

単純な方法です。文字のフォント、サイズ、スタイルに関するRTFの部分を
正規表現を使用して動的に置換する、という内容のプログラムを作っただけです。

この掲示板のレベルから言って(高いという意味)ここに書き込むほどの
ものではないと思いますが、部分的な一例をあげさせて頂きますと:

string selectedRtf = richTextBox1.SelectedRtf;

// 変更する文字サイズ
size *= 2;

selectedRtf = Regex.Replace(selectedRtf, @"\\fs\d+", String.Empty);
selectedRtf = Regex.Replace(selectedRtf, @"\\lang\d{4}", "$0\\fs" + size.ToString());

richTextBox1.SelectedRtf = selectedRtf;

みたいな感じです。文字サイズを2倍しているのは、RTF上の数値が、意図する
サイズの2倍の数値になっているようだから?(アバウトですみません…)です。


まだC#は不慣れなところがあるので、至らない部分が
あればご容赦ください。

解決済み
引用返信 編集キー/
■6317 / inTopicNo.13)  蛇足までに
□投稿者/ 魔界の仮面弁士 少尉(130回)-(2006/09/06(Wed) 13:20:23)

分類:[C#] 

> // 変更する文字サイズ
> size *= 2;
> selectedRtf = Regex.Replace(selectedRtf, @"\\lang\d{4}", "$0\\fs" + size.ToString());
> 文字サイズを2倍しているのは、RTF上の数値が、意図する
> サイズの2倍の数値になっているようだから?
> (アバウトですみません…)です。

「\kerning」「\fs」「\pnfs」「\afs」「\up」「\aup」「\dn」「\adn」などの
RTF コードで指定されるサイズは、0.5 ポイント(half-points)単位です。

ちなみに、「\expnd」「\aexpnd」等は 1/4 ポイント(quater-points)単位です。

解決済み
引用返信 編集キー/
■6324 / inTopicNo.14)  Re[10]: 蛇足までに
□投稿者/ ダッチ 二等兵(5回)-(2006/09/06(Wed) 22:00:52)

分類:[C#] 

まずは正規表現を載せていただきありがとうございます。
私も RTF を直接編集して書式を変更しようとしていて今思考錯誤している最中でした。
載せていただいた正規表現がとても大変参考になりました。

>この掲示板のレベルから言って(高いという意味)ここに書き込むほどの
>ものではないと思いますが、部分的な一例をあげさせて頂きますと:

初心者さんと同じようなところでつまづいている人が、
この掲示板を参考にして解決できるかもしれません。

それには、初心者さんがどのように解決したのかが必要になってくるはずです。
掲示板は情報共有の場ですので、公開できるものはどんどん公開していっていいと思います。その際に掲示板のレベルは関係ないと思います。
そうして情報をみんなで出し合って、みんなのスキルが上がっていければいいなと私は思っております。


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -