HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0303
匿名文字を回転させるコンパクトな方法11解決


匿名

リンク

2016/3/3(Thu) 21:31:17|NO.74752

文字を回転させる方法があるにはあるのですが、
外部の画像を使ったり、gcopyをだらだらと並べて作ったりでごちゃごちゃしてるのですが、
一番コンパクトにできる方法を教えてください。



この記事に返信する


スペース

リンク

2016/3/3(Thu) 22:10:16|NO.74755

そのダラダラとしたコードを貼ってくれないと回答のしようがない。
強いて言うならcntとか配列変数を使ってください。



匿名

リンク

2016/3/3(Thu) 22:42:33|NO.74757

私はコードの改善とか効率化を求めてるのではなく
手段を教えてほしいんです。(ソースを求めてるわけじゃない。)
手段を言えばあとは自分で作るだけなので。



GENKI

リンク

2016/3/3(Thu) 23:14:53|NO.74758

回答に必要な情報が不足しているため、回答に困っています。

「コンパクト」とは…
行数が少ないということでしょうか?それとも文字数が少ない?
実行速度が小さい(早い)ということでしょうか?
「コンパクト」と「コンパクトではない」の境界はどのあたりですか?今の実装方法が示されていないので判断基準がわかりません。

コンパクトの判断基準は人それぞれ違うと思うので、とりあえず実装例書いてみました。
こんなに長い実装はやっぱりダメですよね。

buffer 1 mes "hogehoge" sx = ginfo_mesx sy = ginfo_mesy gsel 0, 1 gmode 0, sx,sy t_deg = 0.0 *main redraw 1 : await 16 : redraw 0 : color 255, 255, 255 : boxf : color : pos 0,0 t = deg2rad(t_deg) pos mousex, mousey grotate 1,0,0, t, sx,sy t_deg += 2.0 goto *main


うーん、もしかしてモジュールとかサブルーチン使えば解決って質問なのかな。



GENKI

リンク

2016/3/3(Thu) 23:16:41|NO.74759

あ。実行ファイルのサイズをコンパクトに、という可能性も。



スペース

リンク

2016/3/3(Thu) 23:52:45|NO.74760

手段を書いて欲しいと言われても・・・書いてますよね?
cntとか配列変数って、手段じゃないのかな?
(先程の投稿ですが、「だらだらとした」と書きましたが正しくは「ごちゃごちゃとした」でした)



cats

リンク

2016/3/4(Fri) 00:04:34|NO.74761

私ならwin32apiを使います。
一見ごちゃごちゃしていますが、速いのと、何より余計なバッファを使わなくてよいのが楽です。

#uselib "gdi32.dll" #cfunc CreateFont "CreateFontA" int, nullptr, int, int, nullptr, nullptr, nullptr, nullptr, int, nullptr, nullptr, nullptr, nullptr, str #func DeleteObject "DeleteObject" int #func SelectObject "SelectObject" int,int #func SetGraphicsMode "SetGraphicsMode" int, int #define ctype deg2ori(%1) %1*10 SetGraphicsMode hDC, 2 rad = deg2ori(-45) hFont = CreateFont(20, rad, rad, 128/*shift-jis*/, "MS ゴシック") SelectObject hDC, hFont pos 100, 200 : mes "これはテストです。" // OK pos 200, 200 : mes "这是一个测试。" // Shift-JISだけ rad = deg2ori(45) hFont = CreateFont(20, rad, rad, 128, "MS ゴシック") SelectObject hDC, hFont color 255 pos 300, 200 : mes "This is a test." // OK redraw 1 ; 領域外も描画[重要] DeleteObject hFont stop
あとは適当にモジュール化すれば簡単でしょう。



cats

リンク

2016/3/4(Fri) 00:05:58|NO.74762

あ、見たら明らかにわかりますが、NO.74761のコードで
CreateFontの引数が多かったので不要な引数をnullptrで消しました。(きたない)



匿名

リンク

2016/3/4(Fri) 01:21:24|NO.74763

何がコンパクトなのかについては私の説明不足でした、ファイル数とか気にしたことがないので・・
組み込んだ時に見づらくならないぐらいの行数でしょうか、色々なウィンドウを扱うと把握に困るので
数行で済む「コンパクト」なやり方はないかと質問した次第です。
bufferでウィンドウを作ったりラベルを作ったりせずにしたいんです。

私はGENKIさんのやり方が応用できそうだなと思いました。
grotateは使い方がよく分からず挫折した過去がありましたが、
お手本をいただけたので研究すれば分かりそうです・・
頑張れば短縮できそうですが・・

何はともあれ有難う御座います。



スペース

リンク

2016/3/4(Fri) 09:44:45|NO.74764

結局匿名さんは元々、repeatとかdeg2radを使って無かったって事なんですかね?
まさかGENKIさんがエスパーだったとは・・・



匿名

リンク

2016/3/4(Fri) 15:19:52|NO.74767

初心者を少し脱却しているほどです、そもそもdeg2radなんて聞いたことが・・
モジュールをちょこっと作れるぐらいです。

参考、アレンジできそうなものを欲しているので易しめのソースがGENKIさんなので
私はそれがいいかなと。



匿名

リンク

2016/3/4(Fri) 17:29:31|NO.74769

なんかもう満足なので解決で。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.