2015年7月13日月曜日

dotNET+MAXscript 手始めに。

温まって来たところで、dotNET+MAXscriptで実際にいろいろ作っていきたいと思います。
まずは、dotNETを使ったUIの基本。フォームの生成です。

こんな感じですね。

(
    --メインフォーム設定--------------------------------------------------------------
    MainFrm = dotNetObject "System.Windows.Forms.Form"
    --フォームのタイトル-----------------------
    MainFrm.text = "testform"
    --フォームサイズ--
    MainFrm.bounds = dotNetObject "system.drawing.rectangle" 50 50 200 200
    --フォームを表示--
    MainFrm.Show()
)

この4行でフォームが生成されます。
まず1行目。
mainFrmが生成されるフォームになるので、ここはなんの名前でもOKです。
「=」以降、ここで作るものがdotnetobjectである、というのを決めます。
たいてい、dotnetobject "なんちゃら~"でブツを作ってくれます。

2行目以降
ブツを作っただけで、中身(プロパティと言います)が空、もしくはデフォルト値なので、プロパティを決めていきます。
.text これはフォームのタイトルバー部分に表示される名前です。
.bounds これはmainFrmが表示されるx.y座標と、ウィンドウサイズの指定です。
ここで注意しないといけないのが、.boundsは直接値を入れてもいうことを聞いてくれないということです。
ブツを作った上で、その中に値を入れてあげないといけません。
dotNetObject "system.drawing.rectangle"でブツを作ってあげます。

""内は、どんなタイプのブツを作るか、という宣言なのですが、これはプロパティごとに決まってますので、随時調べて行きましょう。
プロパティによっては、.textのように値を直接入れてもOKなものも有りますが、どれがOKでどれがダメなものかまでは理解出来てませんので、
値を直接入れてダメなら、ブツが必要なんだなーくらいの認識でやっております。

値は、左から表示されるx座標、表示されるy座標、ウィンドウサイズ横、ウィンドウサイズ縦、となっています。

最後に、.show()で生成されます。


さて、次はこのフォームに画像を表示してみましょう。

画像の表示にはフォームのバックグラウンドに表示させる方法と、PictureBoxというdotNETオブジェクトを利用して表示させる方法とが有りますが、
ここは後から手を加えやすいようにPictureBoxを利用します。

(
    --画像読み込み&変数定義--
    mainimgfiles = "C:\\Users\\Public\\Pictures\\Sample Pictures\\sample.jpg" --表示したい画像を変数に格納--
    mainimgClass = dotNetClass "System.Drawing.Image" --クラスの定義--
    mainimg =(mainimgClass.FromFile mainimgfiles) --mainimgはmainimgクラスのファイル読み込みタイプでファイルのパスはmainimgfiles--
    mainimgWidth = mainimg.Size.Width as integer --mainimgのサイズ(幅)を参照して、intに変換--
    mainimgHeight = mainimg.Size.Height as integer --mainimgのサイズ(高さ)を参照してint型に変換--

    --dotNetオブジェクトを生成--
    imgview = dotNetObject "System.Windows.Forms.PictureBox" --imgviewはdotnetobjectでpictureboxを使います--
    imgview.bounds = dotNetObject "system.drawing.rectangle" 0 0 mainimgWidth mainimgHeight --画像の表示位置はフォームの(0,0)の位置--
    imgview.Image = mainimg --imgviewのイメージプロパティはmainimgです--
    imgview.backColor = (dotNetClass "system.drawing.color").Transparent --imgviewの背景色はカラーのクラスで、透過です。--

    --メインフォーム設定--------------------------------------------------------------
    MainFrm = dotNetObject "System.Windows.Forms.Form"
    --フォームのタイトル-----------------------
    MainFrm.text = "testform"
    --フォームサイズ--
    MainFrm.bounds = dotNetObject "system.drawing.rectangle" 50 50 200 200

    --pitureboxをフォームに追加--
    MainFrm.Controls.Add imgview --mainformにimgviewを追加します。--

    --フォームを表示--
    MainFrm.Show()
)

初めて出てきました「dotnetClass」
これはdotNetobjectと同じく、dotNet関連の物ですよ~という宣言なのですが、
正直なところなところ正確な違いは理解出来てません。
ブツは生成せずに、型を決めてくれる・・・程度の認識です。
興味のある方はMAXのヘルプ読んでみてください。

なんとなーくやってることはわかるんじゃないでしょうか。
ドット以降はすべてdotNETobjectもしくはdotNetclassのプロパティです。

幾つか注意点として上げるならば、
7行目のimgview.boundsですが、mainFrm内に表示するので、表示位置はフォームの(0,0)となります。
ここの値を変えることで、mainFrmの右下や左下なんかに表示させることが出来ます。
また、ingview.backcolorですが、これは背景色を変えることが出来ます。
今は透過していますが、違う色に変えたい場合は”picturebox .backcolor”あたりで検索するとヒットするので
調べてみてください。

わかる範囲で質問には答えようと思ってますので、twitterでもこちらのコメントでもどうぞ。

0 件のコメント:

コメントを投稿