コントロールの回転 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るきお  (社会人) 投稿日時 2013/6/24 20:56:56
>WPF でこのようにしたら、1回目はちゃんとかたむくのですが、2回目以降動作してくれません。
こういう話なら、次のようにaをイベントハンドらの外で宣言するのがもっとも簡単です。
Dim a As Integer = 10

Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)

    Label1.RenderTransform = New RotateTransform(a)
    a = a + 10
End Sub


IsZakoさんのプログラムだと ボタンがクリックされるたびに 変数a を作成するので 何度クリックしても a は初期値の 10 のままです。

>Windowsフォームアプリケーションでやる方法をお願いします。
コントロールを回転させるのはWPFの方が圧倒的に簡単です。
Windowsフォームではコントロールを回転することはできず、どうしてもそのようなことをしたい場合はヴァンさんが書いているように、コントロールのように見えるグラフィックを使ってそれを回転させることになります。
投稿者 ヴァン  (社会人) 投稿日時 2013/6/24 09:21:29
>WPF でこのようにしたら、1回目はちゃんとかたむくのですが、2回目以降動作してくれません。
プログラムではこう書かれています。
「ボタンを押されたら10(度)傾けて表示しなさい」
なので、これが正常動作だと思います。

最後の「a = a + 10」はローカル変数なので意味ないですね。

Windowsフォームで行う場合は自分で全てを Graphics に描画する必要があります。
投稿者 IsZAko  (小学生) 投稿日時 2013/6/23 13:59:17
WPF でこのようにしたら、1回目はちゃんとかたむくのですが、2回目以降動作してくれません。

  Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
        Dim a As Integer = 10
        Label1.RenderTransform = New RotateTransform(a)
        a = a + 10
    End Sub

Windowsフォームアプリケーションでやる方法をお願いします。
投稿者 るきお  (社会人) 投稿日時 2013/6/22 21:26:32
コントロールをアニメーションで回転させる方法を知りたいということでしょうか?
>WPFでしかできません。WPFにはタイマーが無いので、うまくいきません。
できるけど、うまくいかないというところが特によくわかりません。
Windowsフォームで実現したいようにも感じますが、WPFでもよいということでしょうか?

何をやりたいのか具体的に書いてください。
また、既に試していることがあるようですので、その場合は試しているプログラムを載せてください。
プログラムを載せるのは、具体的なイメージを他の人に伝えるためと、第三者への情報提供の意味からです。うまく動かないプログラムも載せる価値はあります。
長すぎる場合には関連する部分を抜粋するなどしてください

やりたいことがよくわからないので、参考にWPFを使ってLabelをアニメーションで回転させる例を紹介します。
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

    <Grid>
        <Label x:Name="label" Height="100" Width="100" Content="test" Background="red">
            <Label.RenderTransform>
                <TransformGroup>
                    <RotateTransform x:Name="Rotation" CenterX="50" CenterY="50" />
                </TransformGroup>
            </Label.RenderTransform>
            <Label.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation
                                Storyboard.TargetName="Rotation"
                                Storyboard.TargetProperty="Angle"
                                Duration="0:0:3" From="0" To="360"
                                RepeatBehavior="Forever"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Label.Triggers>
        </Label>
    </Grid>
</Window>


投稿者 IsZako  (小学生) 投稿日時 2013/6/22 15:31:07
WinndowsFormアプリケーションでラベルなどをタイマーを使ってぐるぐる回転させたいのですが、
WPFでしかできません。WPFにはタイマーが無いので、うまくいきません。