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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0707
ZFS枠ないのメッセージ中央表示方法9未解決


ZFS

リンク

2013/7/7(Sun) 01:15:49|NO.55520

こんばんは
HSPを初めて浅いものです。

質問があります。
例えば、ビットマップの四角い枠を貼り付け
その中央にメッセージを配置したいと思っています。

このサンプルプログラムを教えてください。
※サンプルプログラムを検索しましたが、具体的なものはなく
 わかりませんでした。



この記事に返信する


YSR

リンク

2013/7/7(Sun) 04:24:52|NO.55521

>例えば、ビットマップの四角い枠を貼り付け
>その中央にメッセージを配置したいと思っています。
 その通りに書けばそれでいいじゃん? つまり、
・四角い枠のビットマップファイルを読み込んで表示
・中央に位置を指定してメッセージを表示
とすれば目的達成だ! やったね!

 ……と言うのは別に 冗 談 で も 嫌 が ら せ で も あ り ま せ ん 。
「プログラミング」というのは、上記のような
  「目的を達成するためにこうこうこういった処理をする」
といったことの積み重ねなのです。極端な話、「こうこうこういった処理」を言葉、
いやプログラムのコードにすることができれば、どんなプログラムも書くことが
できます。逆に言えば、自分で一から処理する方法を考えなければならないことは
プログラミングでは日常茶飯事です。都合よくやりたいこと全部がサンプルコードとして
どこかに転がっているなんてことはまず無いと思ってください。あったとしても、
「配列をソートする方法」とか「二つの領域がぶつかっているかを判定する方法」とか
のように、一部分のパーツしかないことがほとんどです。

 あなたのいう「検索」がどこまで真面目に探されたものかは知りませんが
(この掲示板も画面下の「サイト内検索」で過去ログを検索できる)、
「やりたいこと全部を聞く」なんて無茶はせず、
「部分的な方法が分からないので聞く。後は自力でなんとかする」方が
よっぽど勉強になります。



菊岡万次郎

リンク

2013/7/7(Sun) 05:34:24|NO.55522

・・・初心者に向かってプログラム論を語ってもかえってわかりにくくなる気がします

とりあえず、
>>例えば、ビットマップの四角い枠を貼り付け
これがよくわからないです。
ビットマップの四角い枠というのは画像の枠のことなんでしょうか?

>>その中央にメッセージを配置したいと思っています。
とりあえずウィンドウの中心に文字を表示するプログラムソースを書いてみました。

buffer 0 mes "testてすとでゃそhぢそあbぢょあい" x=ginfo(14)/2 y=ginfo(15)/2 screen 1,1000,1000,,,,640,480 repeat redraw 0 color 255,255,255 boxf pos ginfo(12)/2-x,ginfo(13)/2-y color 0,0,0 mes "testてすとでゃそhぢそあbぢょあい" redraw 1 wait 1 loop

あえてコメントなどは書いていません。
動作を確かめたら、わからない命令などはスクリプトエディタでF1を押せばヘルプがでるので
それを見ながら挑戦してみてください



あり

リンク

2013/7/7(Sun) 10:44:48|NO.55523

まずはHSPの基礎を全て学んでからというのは大前提として
極度に高速な処理を必要としないのであれば
【Artlet2D】の【alDrawText】には、指定した枠(矩形)内に
位置を自動で調整して表示してくれる機能があるので
自分のスキルに応じて使ってみるのもいいでしょう。

#include "a2d.hsp" alCreateImageByFile 0, dir_tv + "sozai1.jpg" ; 仮の枠用画像 frm_xsize = algetwidth() ; 枠画像の横幅 frm_ysize = algetheight() ; 枠画像の高さ alCreateImage 1, frm_xsize, frm_ysize alSelectImage 1 alCopyImageToImage 0, 1, 0, 0, frm_xsize, frm_ysize , 0, 0 txt = "メッセージを指定した矩形内に中央揃えで表示する(自動改行付き)" alFont MSGOTHIC, 50, 0 alcolor 255, 100, 100, 255 alDrawText txt, 0, 0, frm_xsize, frm_ysize, 1, 1 alCopyImageToScreen 1, 0, 0, 0, frm_xsize, frm_ysize, 0, 0 redraw



トホホッティー

リンク

2013/7/7(Sun) 13:58:30|NO.55525

とりあえずセンター揃えです。
表示文字数を計算して、表示位置決めてます。
Y座標は自分で決めてみてください。


screen 0 cls 4 bbbb="よろしくお願いします。" color 255,255,255:michi=strlen(bbbb):pos 320-(michi*8/2),350:mes bbbb stop



ZFS

リンク

2013/7/7(Sun) 14:02:20|NO.55527

沢山の回答ありがとうございます。

申し訳ありません。具体的にどうしたいのか説明不足でした。
今作成しているのは、各項目があってその選択により
3Dモデルに繁栄させようとしているものです。

初心者で申し訳ないのですが、作成したものを載せておきます。
質問は、下の"(ここには100×30サイズの画像データ)"の
中心に文字を任意の数値で配置ではなく
どんな大きさになっても中心に文字を置きたいと考えております。

どうか教えてください。お願いします。

#include "user32.as"

pos 440,100
picload "(ここには100×30サイズの画像データ)",1

pos 465,110:font msgothic,15,1:color $FF
mes "選択名"

font msgothic,10,1: clist="A\nB\nC"
pos 560,105
combox cb,64,clist

stop

*jump



KA

リンク

2013/7/7(Sun) 14:53:07|NO.55529

1:画面のサイズ(X,Y)を得る。
2:それぞれの半分が画面の中心(X/2,Y/2)。
3:画像のサイズ(X1,Y1)を得る。
4:それぞれの半分が画像の中心(X1/2,Y1/2)。
5:文字のサイズ(X2,Y2)を得る。
6:それぞれの半分が文字の中心(X2/2,Y2/2)。
7:(X/2,Y/2)の座標に、(X1/2,Y1/2)と(X2/2,Y2/2)が来るように基点を計算。

実際に紙に書いて考えてみれば簡単なはず。



fortunehill

リンク

2013/7/7(Sun) 15:02:45|NO.55530

/*ご参考*/

#include "user32.as" #include "gdi32.as" pos 440,100 ; picload "(ここには100×30サイズの画像データ)",1 xx = rnd(100)+100 :yy = rnd(100)+30 boxf 440,100,440+xx,100+yy :color $ff font msgothic,15,1 :dim nn,2 ss = "選択名" GetTextExtentPoint32A hdc,varptr(ss),strlen(ss),varptr(nn) ;ダミー描画して ginfo_mesx ginfo_mesy 取得でも良い pos -1000,-10000 :mes ss title strf("W(api)=%d H(api)=%d : W(hsp)=%d H(hsp)=%d",nn,nn(1),ginfo_mesx,ginfo_mesy) pos 440+((xx/2)-nn/2),100+((yy/2)-nn(1)/2) mes ss



トホホッティー

リンク

2013/7/7(Sun) 15:27:33|NO.55532

画像は用意するのと、フォントサイズにより位置が微調整しないと
いけませんが、とりあえずこのサンプルを参考にしてみてください。


screen 0 cls 4 font "",16 buffer 1 picload "(画像ファイル名)",0 gasi_x=ginfo(26) gasi_y=ginfo(27) ;(四角い画像の表示位置) gapo_x=200 gapo_y=150 gsel 0 pos gapo_x,gapo_y gcopy 1,0,0,gasi_x,gasi_y bbbb="よろしくおねがいします" color 255,255,255 michi=strlen(bbbb) pos gasi_x/2+16+gapo_x-(michi*8/2),gasi_y/2-8+gapo_y mes bbbb stop



ツノン

リンク

2013/7/7(Sun) 16:12:53|NO.55533

user32.dll の DrawTextEx 関数を使用する方法もあります。

#include "user32.as" rc=20,20,300,60 color 200,200,255:boxf rc,rc.1,rc.2,rc.3 color DrawTextEx hdc,"DrawTextEx",-1,varptr(rc),0x25/*DT_CENTER|DT_VCENTER|DT_SINGLELINE*/,0 redraw



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