文字を斜めに書くTOOL

解決


永年初心者  2005-09-08 21:34:38  No: 125023

VB6で絵と文字を書くソフトを作っています。  この中で文字を傾斜させて書けたらかなり見栄えがします。  もしこれが可能なテクニック、TOOL(OCX,DLLなど)があったらご教示をお願いします。


ガッ  2005-09-08 21:52:52  No: 125024

WinAPIでCreateFontかCreateFontIndirectをググると詳細な情報を得ることができると思います。


ガッ  2005-09-08 21:53:53  No: 125025

なんか文章がおかしいですね;
>WinAPIの
はいりませんでした。


永年初心者  2005-09-09 00:20:16  No: 125026

ガッ様  ご回答をありがとうございます。  Googleなどを探し回りましたが初心者の悲しさ、残念ながらそれらしいものに出会うことはできませんでした。  最悪の場合は別のpistureに文字を書かせて座標変換してPsetで、などと考えていますがその遅さを考えると是非ともマジックがほしいところです。  何かヒントでも結構ですからお願いします。


030  2005-09-09 00:54:51  No: 125027

ヒントから検索、試行に至るまでのパターンを書いてみました。

ガッさんの言われる通りのキーワードにてGoogleで検索する。
検索結果の最初に表示されるURLをクリック
http://yokohama.cool.ne.jp/chokuto/urawaza/api/CreateFontIndirect.html

すると、CreateFontIndirectを使うのにはLOGFONT構造体を指定しなければならない事が分かる。
そこで、同ページのLOGFONTをクリックして構造体の定義を調べてみる。
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/LOGFONT.html

構造体のパラメータを眺めていると「ベースラインとX軸との角度」という
パラメータがあることに気付く。
これを変えたら何とかなるんじゃないかと考える。

ソースを書いて実験してみる。
次回ソースコード編に続く(のか?)


030  2005-09-09 01:41:30  No: 125028

と思ってたらK.J.Kさんのサイトにずばりそのもののサンプルがありました。
紹介させてもらいます。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/
タイトル「文字列を回転させる」を参照して下さい


通ってみた  2005-09-09 02:09:57  No: 125029

フォント指定を斜体にする

っていう問題ではないか・・・スンマソ


永年初心者  2005-09-10 01:34:19  No: 125030

030さん、有益な情報をありがとうございました。  最初いただいたご発言によりご紹介いただいたサイト2件を開いて頭をひねっていましたがどうやらこの文体はCらしい。  これをVBでどうやるのかと諦めかけていましたが2回目のご発言によりソースコードが見つかったためどうやら両者の関係が変数の名前から比較できることが少しづつわかりはじめた段階です。

ソースコードに角度や文字列を打ち込んでその結果を見て納得しはじめているところですがまだ「例えばPicture2の200,300の位置に書かせたい」などの場合はどうするのか?  というようなところまでは分かっていません。

この技を使えば物凄く高速に処理できそうなので是非採用したいところですが正直技術的なバックグラウンド不足のため自信がつかめません。  ご紹介されたソースコードの中で必要な箇所だけを抜き出して「文字列、サイズ、位置、角度」などを指定すると指定した場所に斜めの文字が書ける、というものを作って生きたいと思います。  時間が懸かるかもしれませんが「解決」にチェックを入れないでおきますのでまたご教示ください。


永年初心者  2005-09-26 23:32:07  No: 125031

ガッ様、030様  ありがとうございます。

ご紹介いただいたKJK氏のソフトを試し、ソースコードを眺めていましたがこの中のMetaMakerとは?  などという初歩的なものからわからず結局は自力では解決できないものと諦めました。  でもVBでできるはずなのに諦めるのは非常に残念です。

今までは本などでVBを独学で学習し、各種のAPIなどを(本のサンプルを参考に)かなり便利にVBを使ってきましたが今回のような場合は理屈がわからないとアレンジもできず先に進めません。  近年「ソースコードを教えてください、みたいなことを言う者は去れ!」みたいな風圧を感じますがどうしても目的を達成したいのでお叱りを覚悟でここであえてお願いしちゃいます。  

VB環境:VB6(SP6)
仕様は「指定した文字列を「縦書きで」指定したFontName,FontSizeで指定した位置に指定した角度でPicture1に書かせる」というものです。

Doc = "御媒酌人様"
CaptionAngle = 30 'Deg
Picture1.FontSize = 15 
Picture1.FontName = "MS 明朝"
Xpos = 300
Ypos = 300

ChrRotate

'---------------------------------------------
Private Sub ChrRotate()
(ここを教えてください)
End Sub


特攻隊長まるるう  2005-09-27 00:13:49  No: 125032

>MetaMakerとは?  などという初歩的なものからわからず
ただのユーザコントロールですね。中身は Image コントロール
が1つ張り付いているだけの単純なものです。APIとか関係
ないです。ユーザコントロールを作った事がありませんか?
[VB6.0]の場合、ヘルプを『UserControl』で検索すれば
チュートリアルっぽい説明が載ってます。それを参考に自分
で好きなコントロールがある程度作成できる仕組みを勉強して
きて下さい。

>近年「ソースコードを教えてください、みたいなことを言う者は去れ!」みたいな風圧を感じますが
ただ去れって言ってる訳ではありません。そもそもAPIを
扱うにはそれなりの実力が必要です。単純なVB側の処理だけ
ならまだしも、APIはコンピュータに直接影響を与えます。

本来、実力が無い人にそのようなコードを教えるべきではありません。

それでもキーワードは示されると思います。そのキーワードを
もとに自分で調べられる事自体が重要なのです。また、調べられない
場合、苦労して寄り道しながら調べる過程で必要な実力がつく
というわけです。これを実践してもらえないのでは、危なっかし
くてとても教えられません。
>各種のAPIなどを(本のサンプルを参考に)かなり便利にVBを使ってきましたが
そろそろそんな事に気付いてもおかしくない期間は勉強されたと
思うんですが?…そんな風に思った…もしくは過程が重要である
と分かる記述にまだ出会ってませんか???


永年初心者  2005-09-27 23:44:40  No: 125033

まるろうさん、ご教示ありがとうございます。まず恥ずかしい話ですが
①UserControlなど使ったことはありません。
②当方にある10冊以上の中でユーザーコントロールを使って何かを作るような記事はありませんでした。初歩的なものしか読んでいないからかもしれませんので「過程」について書かれたものは皆無です。VB5時代のMSのマニュアル「コンポーネントツールガイド」を見たらユーザーコントロールのことが書いてありました。  わからない単語ばかりでちょっと見た限りでは何故これを使うのかもわかりませんでした。  

直接技術的なことではなくて申し訳ありませんが今後の本サイトのあり方にも
大事な課題と考え書かせていただきます。当方はN88BASIC時代から長い間技術計算や最近ではイラストレーターのデータをN88BasicやVBで作るなど便利に使ってきました。  周囲には全くVBをやる方がおられないので地方の書店で売っている入門書だけが頼りですが「300の技」や「極意」などで入門書にはない各種のAPIなどを知り(内容は何も知りませんが)便利に使って扱える範囲が大幅にひろがっています。

恐らくまるろうさんは大変ご親切な方で私を一歩高いレベルに持ち上げてくれるよう叱咤激励されておられると思います。しかし見慣れない単語ばかりで取り付くファイトが沸く以前にため息、というのが実情で上に引っ張ってもらうにもレベルが低すぎます。  

VB5を買ってきた時に付いていた「プログラミングガイド」などその時点では全く手に負えないほど難解に感じましたが今改めて見るとなるほどと結構わかります。これに対して「コンポーネントツールガイド」は現時点では見上げるばかりです。

このように単にVBをより便利に手軽に使いたいと思ってこの言語を使っている方は多いのではないかと思います。本質問のタイトルも「TOOL」があったら教えてくださいというもので、また自作できるものならやってみたいと思っていたものです。こんなレベルの質問にマッチした「超初心者掲示板」サイトがあったらなー、と思いました。  色々とありがとうございました。


特攻隊長まるるう  2005-09-28 00:46:01  No: 125034

言われた通りの事をせず、勝手な解釈で文句だけ言われても困ります。
>VB5時代のMSのマニュアル「コンポーネントツールガイド」を見たら
そんなものボクは見た事ありません。[Vb6.0]のヘルプを見るように書きましたが?
>チュートリアルっぽい説明が載ってます
と書いたように、[Vb6.0]のヘルプには図とサンプルコードが交互に
載せてあり、絵本を読むレベルで書かれた通りの事をすればいいだけです。
話題を自分の勝手な行動ですり替えての言い掛かりは勘弁願います。

>本質問のタイトルも「TOOL」があったら教えてくださいというもので
…であるなら
>理屈がわからないとアレンジもできず
とか
>また自作できるものならやってみたいと思っていたものです
などと言わず、そのままの形で K.J.K さんのソフトを使って下さい。
矛盾してますよ?理屈が分かるとか、自作するって事は、自分で実力を
つけるって事ですよね?自分の要求に対して文句言ってるように
思うんですが???

免許取ってから3年間自動車に触った事のないペーパードライバーが
F1のレースをTVで見て感動したとします。レースに出たいと言って
相手にしてもらえますか?最初から要求のレベルが高いのです。
レベルの高い要求を自分で出しておきながら、自分の実力が低い事は
言い訳になってません。今回も、ユーザコントロールの作成から
勉強を始めれば良いだけですが…自分で諦めるならボクにはどうする
事もできません。

掲示板の責任にせず、自分の責任は自分で取りましょう。


だ か ら  2005-09-28 00:56:06  No: 125035

永  年  初  心  者  な  ん  だ  よ


永年初心者  2005-09-28 02:23:38  No: 125036

誤解されたようで失礼しました。わからないことがわかっていただけないようで残念ですが決して悪意を持つものではありませんので悪しからずご理解ください。

>VB5時代のMSのマニュアル「コンポーネントツールガイド」を見たら
そんなものボクは見た事ありません。[Vb6.0]のヘルプを見るように書きましたが?
説明不足でした。VB6のHELPと全く同じ文章と絵が書かれています。パソコンを離れる時にパソコンのない寝床で見るために見つけましたので・・・

>チュートリアルっぽい説明が載ってます
と書いたように、[Vb6.0]のヘルプには図とサンプルコードが交互に
載せてあり、絵本を読むレベルで書かれた通りの事をすればいいだけです。
話題を自分の勝手な行動ですり替えての言い掛かりは勘弁願います。
(改めて図9.7を見て)チュートリアル風ですが一体何をするのかわかりません。ShapeLabel1をどうやって貼り付けるのか、という段階から。

>本質問のタイトルも「TOOL」があったら教えてくださいというもので
…であるなら
>理屈がわからないとアレンジもできず
とか
>また自作できるものならやってみたいと思っていたものです
などと言わず、そのままの形で K.J.K さんのソフトを使って下さい。
矛盾してますよ?理屈が分かるとか、自作するって事は、自分で実力を
つけるって事ですよね?自分の要求に対して文句言ってるように
思うんですが???
もちろんやろうとしましたがコントロールをどうやって貼り付けるのか、の段階で立ち止まってしまいました。それにKJKさんのあの丸いBMPは何でしょうか?  

今回も、ユーザコントロールの作成から
勉強を始めれば良いだけですが…自分で諦めるならボクにはどうする
事もできません。掲示板の責任にせず、自分の責任は自分で取りましょう。

何かやりたいことがあった場合に意外と簡単に、例えば数行でできるものが多々あるものです。今回も何か簡単な方法とか市販のTOOLがあるかなと思って質問したものです。  どうか悪しからずご理解ください。BASICは便利なTOOLとして仕事に遊びに僕には欠かせないものなのでこれからも自分で出来るレベルで使い続けるものと思います。

上を目指す皆様はどうか研鑽を積んで一層のレベルアップをしてください。

(完)


名無し  2005-09-28 05:37:58  No: 125037

>上を目指す皆様はどうか研鑽を積んで一層のレベルアップをしてください。

おまいに言われる筋合いはない


いな  2005-09-28 06:13:36  No: 125038

だ  か  ら  、  あ  げ  る  な  よ  。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加