|
|
2013/7/7(Sun) 01:15:49|NO.55520
こんばんは
HSPを初めて浅いものです。
質問があります。
例えば、ビットマップの四角い枠を貼り付け
その中央にメッセージを配置したいと思っています。
このサンプルプログラムを教えてください。
※サンプルプログラムを検索しましたが、具体的なものはなく
わかりませんでした。
|
|
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
|
|
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
|
|
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)が来るように基点を計算。
実際に紙に書いて考えてみれば簡単なはず。
|
|
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
|
|