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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0924
ふぃる文字を真ん中に表示させたい8解決


ふぃる

リンク

2013/9/24(Tue) 01:50:27|NO.57317

HSP初心者なんですが
mesで表示させる文字を左右対称にちょうど表示させたいのですが、
fontでサイズを変更すると一文字が何ピクセルだかわからないので

redraw 0 font "MS ゴシック",50,1 mes "タイトル" cls p = ginfo_mesx x = (ginfo(12) - p) / 2 y = (ginfo(13) - 18) / 2 pos x,y mes "タイトル" redraw 1
こういう風に一度mesを使ってからサイズを確認して真ん中を割り出しているんですが、
もっと簡単にできる方法はないのでしょうか?
タイトルに使いたいのでちょうど真ん中に表示させたいのです
画像を使えば簡単だと思いますが、勉強を兼ねてテキストでの方法を知りたいのです

もう一つ質問なのですが、
上をテキストではなく、カスタムボタンを真ん中に表示させたい場合、

buffer 1,,,0 picload "strat.png",0 gazoux = ginfo(12) gsel 0 x = (ginfo(12) - gazox) / 2 y = (ginfo(13) - 18) / 2 pos x,y+20            //上のテキストとかぶるため objimage 1 objsize 150,90 button "",*tekijunbi
と書いているのですが、
初め、celloadを使おうと思い、読み込んだ画像のサイズをginfo(12)で求めようと思ったのですが、
なぜか終了してしまいました
仕方なく上のコードにしたのですが、メモリの無駄になっているのでしょうか?
今は別にメモリとか気にしていないのですが、これからもしメモリを意識したプログラムを作るときがあるかもしれないので
今のうちに他にどんな方法があるのが学びたいです
なので、なにか他に良策がありましたら教えてください



長文&駄文失礼します
他にも何かアドバイスなどがありましたら添えて指摘していただけると幸いです



この記事に返信する


暇人

リンク

2013/9/24(Tue) 02:17:32|NO.57318

>もっと簡単にできる方法はないのでしょうか?
基本的にはその方法だろう
サイズ確認は裏画面使うとか、裏画面に書いたのをコピーするとかはあるだろうけど
標準命令から外れれば他にも方法あるが簡単とは良いにくい・・・

>初め、celloadを使おうと思い、読み込んだ画像のサイズをginfo(12)で求めようと思ったのですが、
> なぜか終了してしまいました
それは終了したんじゃなくscreenをbufferに変えてしまって見えなくなってると思う
タスクマネージャでhsp3.exeが残ってないか確かめた方が良い
celloadはbuffer+picloadと同等のことをしてるのでIDの指定には注意が必要



暇人

リンク

2013/9/24(Tue) 02:34:48|NO.57319

>これからもしメモリを意識したプログラムを作るときがあるかもしれないので
その時に実際に必要なメモリを計算して考えれば良い事
640*480のbuffer確保しても1Mバイトにも満たない



あり

リンク

2013/9/24(Tue) 03:25:46|NO.57320

文字の中央表示については過去スレ
http://hsp.tv/play/pforum.php?mode=pastwch&num=47721
を参考にしてみて下さい。



fortunehill

リンク

2013/9/24(Tue) 11:20:23|NO.57321

/*ご参考*/

font msgothic,50,1 ss = "タイトル" pos -1000 mes ss pos ginfo_winx-ginfo_mesx>>1,ginfo_winy-ginfo_mesy>>1 mes ss line 0,ginfo_winy>>1,ginfo_winx,ginfo_winy>>1 line ginfo_winx>>1,0,ginfo_winx>>1,ginfo_winy



しまくろねこ(おにいさん)

リンク

2013/9/24(Tue) 23:27:13|NO.57330

こんにちわ。

フォントのポイントから1文字のピクセル数を取得する方法でも可能かと思います。

下の例では、「9」ポイントのフォントサイズのピクセル数を取得します。
(※DPIは「96」としています)


point_v = 0.0 + 9 get_pixel = int(strf("%d", strf("%1.1f", point_v * 1.333f))) ;;;;;(1.333 = 96DPI ÷ 72(1ポイント))



GENKI

リンク

2013/9/24(Tue) 23:34:03|NO.57331

> mesで表示させる文字を左右対称にちょうど表示させたいのですが、
> fontでサイズを変更すると一文字が何ピクセルだかわからないので

過去スレと合わせて、こちらもどうぞ。

String/矩形 - HSP開発wiki
http://hspdev-wiki.net/?String%2F%B6%EB%B7%C1#g095da3b



> 初め、celloadを使おうと思い、読み込んだ画像のサイズをginfo(12)で求めようと思ったのですが、

これでどうですか?

celload "strat.png" face=stat g = ginfo(3) gsel face, 0 dialog "画像サイズ:"+ginfo_winx+ " x "+ginfo_winy gsel g, 0



ヒロソフ

リンク

2013/9/24(Tue) 23:59:15|NO.57332

Win32 APIのGetTextExtentPoint32(A)関数を使うというのはどうでしょう

以下にサンプルのURLを提示します。
ただし、タブを考慮する場合はDrawText(A)又はGetTabbedTextExtent(A)
を用いる必要があるようですが今回は省きます(タブは考慮しません)

https://gist.github.com/HiroSof/6686030



ふぃる

リンク

2013/9/27(Fri) 20:18:48|NO.57374

みなさんご親切にありがとうございます!!
とても参考になりました!!
プログラムに活かしていきたいと思います!!



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