C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 幅:高さ を 常に 16:9 にする計算PG


(過去ログ 64 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■36757 / inTopicNo.1)  幅:高さ を 常に 16:9 にする計算PG
  
□投稿者/ hs (53回)-(2009/06/04(Thu) 21:18:03)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっております。
VS2008-VBで開発しています。

3列・3行のTableLayoutPanelをフォームに配置し、そのTableLayoutPanelの2列目2行目の値を
フォームリサイズ時に常に16:9にする計算方法に苦しんでいます。

頭が固くPGが組めなくてとても困ってます、皆さんの力をお借りできれば幸いです。
ご教授よろしくお願いします。
引用返信 編集キー/
■36764 / inTopicNo.2)  Re[1]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ たくボン (176回)-(2009/06/05(Fri) 02:11:58)
No36757 (hs さん) に返信
> いつもお世話になっております。
> VS2008-VBで開発しています。
>
> 3列・3行のTableLayoutPanelをフォームに配置し、そのTableLayoutPanelの2列目2行目の値を
> フォームリサイズ時に常に16:9にする計算方法に苦しんでいます。

んー、これだけだと仕様が掴みにくいよなぁ。
真ん中のパネルだけ16:9の比率になればいいのかな?
比率だけ維持するなら、適当に計算すればいいけど、他にも条件があるなら書かないと解答のしようがないかも。
引用返信 編集キー/
■36765 / inTopicNo.3)  Re[1]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ らじうむ (8回)-(2009/06/05(Fri) 03:08:29)
No36757 (hs さん) に返信
> いつもお世話になっております。
> VS2008-VBで開発しています。
>
> 3列・3行のTableLayoutPanelをフォームに配置し、そのTableLayoutPanelの2列目2行目の値を
> フォームリサイズ時に常に16:9にする計算方法に苦しんでいます。
>
> 頭が固くPGが組めなくてとても困ってます、皆さんの力をお借りできれば幸いです。
> ご教授よろしくお願いします。

コントロールのAnchorプロパティを全方向に設定すればそれらしくなる気がしますよ
引用返信 編集キー/
■36767 / inTopicNo.4)  Re[1]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ Jitta on the way (327回)-(2009/06/05(Fri) 06:50:15)
No36757 (hs さん) に返信
> いつもお世話になっております。
> VS2008-VBで開発しています。
>
> 3列・3行のTableLayoutPanelをフォームに配置し、そのTableLayoutPanelの2列目2行目の値を
> フォームリサイズ時に常に16:9にする計算方法に苦しんでいます。
>
> 頭が固くPGが組めなくてとても困ってます
フォームのサイズ変更は、縦、横、斜めに行えます。resize イベントで、今までのサイズと、今のサイズを比べれば、どれが変わったかわかります。
ここで問題は、基準を何にしますか?ということです。縦、又は横のどちらかを基準として、そこから比率を計算します。

と、ここまで書いて、もうひとつ問題がありますね。3行3列のうち、中央だけということですが、横方向にリサイズした場合、3列のサイズはどの様に変化していくのでしょう?
引用返信 編集キー/
■36777 / inTopicNo.5)  Re[2]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ επιστημη (1949回)-(2009/06/05(Fri) 10:37:30)
επιστημη さんの Web サイト
ちょっとお試し。

16:9の幅:高さを保ち、
フォームとのマージンを左右に10/上下に5を確保しつつ、
フォームいっぱいに広がるボタン。

Public Class Form1

    Private ReadOnly szMargin As New Size(10, 5) ' 左右/上下マージン
    Private ReadOnly szRatio As New Size(16, 9) ' 幅:高さ

    ' フォームのクライアントサイズが変更されたらこれをやる。
    Private Sub Form1_ClientSizeChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles MyBase.ClientSizeChanged
        ' クライアント・サイズを取得し
        Dim desiredSize As Size = Me.ClientSize
        ' 左右/上下マージン分縮め、
        desiredSize = Size.Subtract(desiredSize, szMargin)
        desiredSize = Size.Subtract(desiredSize, szMargin)
        ' 比率調整
        If desiredSize.Height * szRatio.Width > desiredSize.Width * szRatio.Height Then
            desiredSize.Height = desiredSize.Width * szRatio.Height / szRatio.Width
        Else
            desiredSize.Width = desiredSize.Height * szRatio.Width / szRatio.Height
        End If
        ' ボタンの位置を決め、
        Button1.Location = New Point((Me.ClientSize.Width - desiredSize.Width) / 2, _
                                     (Me.ClientSize.Height - desiredSize.Height) / 2)
        ' サイズを決める。
        Button1.ClientSize = desiredSize
    End Sub

End Class

引用返信 編集キー/
■36782 / inTopicNo.6)  Re[3]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ hs (54回)-(2009/06/05(Fri) 11:20:48)
□投稿者/ たくボン
>比率だけ維持するなら、適当に計算すればいいけど、他にも条件があるなら書かないと解答のしようがないかも。
他には条件はありません。

□投稿者/ らじうむ
>コントロールのAnchorプロパティを全方向に設定すればそれらしくなる気がしますよ
これでは16:9をキープというより余白幅の維持のみになってしまい、今回の質問に至りました。

□投稿者/ Jitta on the way
>フォームのサイズ変更は、縦、横、斜めに行えます。resize イベントで、今までのサイズと、今のサイズを比べれば、どれが変わったかわかります。
>ここで問題は、基準を何にしますか?ということです。縦、又は横のどちらかを基準として、そこから比率を計算します。
基準は16:9 高さが9なら幅は16 幅が16なら高さは9 以外に説明ができません。基本的に基準は幅にしないと間違えなくエラーになるでしょうけど...
今回の3×3のTableLayoutPanelの四隅には50%の比率を設定しようと考えており、真ん中の部分を絶対値で設定すれば何とかなるかなと考えていました。
ですので単純に16:9を計算したかったのです。

□投稿者/ επιστημη
ズバリでした。

みなさんこんな質問にたくさんのアドバイス感謝しておりますm_ _m
また何かあった時はよろしくお願いします。

解決済み
引用返信 編集キー/
■36794 / inTopicNo.7)  Re[4]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ επιστημη (1951回)-(2009/06/05(Fri) 12:05:04)
επιστημη さんの Web サイト
> ズバリでした。

あれま、コレでよかったの? (なんか拍子抜けww)

で、やってることは極めて単純なんですが
コレのドコがわからんかったですか?

解決済み
引用返信 編集キー/
■36797 / inTopicNo.8)  Re[5]: 幅:高さ を 常に 16:9 にする計算PG
□投稿者/ hs (55回)-(2009/06/05(Fri) 13:51:40)
No36794 (επιστημη さん) に返信
> で、やってることは極めて単純なんですが
> コレのドコがわからんかったですか?

フォームリサイズ時に常に16:9にする計算方法というか計算式(考え方)です。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -