くるくる回る色を教えて。 への返答

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

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

投稿者 ぼく  (小学生) 投稿日時 2008/10/19 06:30:27
それです。
なにせ無料版なんでbasicしか使えない。
コロンでおkですか。アりがと。
投稿者   (社会人) 投稿日時 2008/10/19 06:15:18
>A=0
>B=0
>縦長になる。横で入れたい(笑)

もしやとは思いますが・・・

Dim A As Integer : Dim B As Integer
A = 0 : B = 0


こういう意味ではないですよね?^^;
投稿者 るしぇ  (社会人) 投稿日時 2008/10/19 02:54:30
批判されてるなんて思ってないよ?
ずっと同じようなキャラだから、そっちの表現のほうが理解しやすいのかと
思ってマネしただけ。ちゃんと質問には答えてるでしょ?

> 違う質問だったんですが・・・
なら尚更分からないです。
このスレッドには変数A,Bが出てくるプログラムが無いと思いますが?
縦長ってのがボクの書いたサンプルの画像で無いならどの縦長?

>2 描画した絵とかグラフィックスを記憶したい
これもボクのサンプルで描いた画像を保存する質問として回答しましたが
違う質問なら答えようが無いね。別スレッドで一から説明してください。
投稿者 ぼく  (小学生) 投稿日時 2008/10/19 01:18:30
違う質問だったんですが・・・
なんか時間が止まってない?ココ。
クルクルプログラムは批判してませんので。
いろいろ方法がてんこ盛り
GraphicsPath.AddArc(single,single,single,single,single,single)
いろいろ難しい。Basicは難しい。C#とかC++と一緒のレベルだ。

投稿者 るしぇ  (社会人) 投稿日時 2008/10/19 01:08:09
でたニセ質問だ。
変数AもBも使ってねぇ(笑)
しかも描画を決定してる変数1つだぞ、数違う。

Constに0入れると0割りで入らん。
他のStep関連の変数は0入れると描画しない。
偽testか?

とりあえず縦長になるのは描画領域の幅を変更
してるからだろ?高さ変更しろ。
ぼく   (小学生)のプログラムに足し算と引き算と掛け算と割り算追加しただけなんだから質問しないで解析四郎。
こんなノリがいいのか?疲れる脳。

>2
描画した絵なんて大量のデータ記憶するのバカ?
100Step刻んだら100画像覚えていないと描画できないのか?
描画を決定してる変数1つ覚えろ。1とか2とか3だ、それだけ。
あとはfunctionだ、すぐあそべる。
イメージ使いたいならPictureBox
クルクル回さず絵を描け。
もう1時間でできた。あとは放っておく、以上。
投稿者 ぼく  (小学生) 投稿日時 2008/10/18 07:24:02
なるほど。3Dみたいに回ってますね。
現状、質問したいことは、山ほどあるんですが。::
1 カッコ悪い質問(恥?)
変数Aに0を入れる。Bに0を入れる
A=0
B=0
縦長になる。横で入れたい(笑)

2 描画した絵とかグラフィックスを記憶したい、あるいは、記憶したものを、すぐにformのbackgroundイメージで使いたい。


投稿者 るしぇ  (社会人) 投稿日時 2008/10/18 04:53:40
。。。
くるくるってこういうことじゃなかったんだ。。。


    Private Const m_StepMax As Integer = 100
    Private Const m_StepWidthMax As Integer = 200
    Private m_Step As Integer
    Private m_StepWidth As Integer
    Private m_Count As Integer
    Private m_Revers As Boolean

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        With Me.Timer1
            .Enabled = Not .Enabled
        End With
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Timer1.Tick
        Dim green As Integer = m_Step * m_Count
        Dim Brush As SolidBrush
        Dim g As Graphics = Me.CreateGraphics

        If green > 255 Then green = 255
        If green < 0 Then green = 0
        Brush = New SolidBrush(Color.FromArgb(255, green, 0))

        Me.Refresh()
        g.FillEllipse(Brush, CInt(100 + (m_StepWidth / 2) * (m_StepMax - m_Count)), 100, m_StepWidth * (m_Count - 1), 200)

        Brush.Dispose()
        g.Dispose()

        If m_Revers Then
            m_Count -= 1
        Else
            m_Count += 1
        End If
        If m_Count > m_StepMax OrElse m_Count < 0 Then m_Revers = Not m_Revers

    End Sub

    Private Sub Kurukuru_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        m_Step = CInt(255 / m_StepMax)
        m_StepWidth = CInt(m_StepWidthMax / m_StepMax)
    End Sub
投稿者 ぼく  (小学生) 投稿日時 2008/10/17 18:59:35
どうやったんだ?、色の書き込み。
もうちょっと詳しく説明四郎。
聖風じゃないのか?
天草四郎=聖風君?
投稿者 ぽく  (小学生) 投稿日時 2008/10/17 10:18:16
だーから特殊コード使えっつの。
学習能力の無いハゲだな。

Option Strict On
'10/16_org 
Public Class Form1
    '色の回転例 
    Private Sub Form1_Paint(ByVal sender As ObjectByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim i As Integer = &H78FF0000
        Dim ii As Integer
        For ii = 0 To 10
            Dim Brush As New SolidBrush(Color.FromArgb(i + ii * 10))
            e.Graphics.FillEllipse(Brush, 100 + ii * 10, 100, 200, 200)
        Next
        i = &H7800FF00
        For ii = 0 To 25
            Dim Line As New Pen(Color.FromArgb(i + ii * 10))
            e.Graphics.DrawLine(Line, 100, 320 + ii * 5, 300, 320 + ii * 5)
        Next
        Dim line1 As New Pen(Color.FromArgb(78, 255, 0, 0))
        e.Graphics.DrawLine(line1, 100, 500, 300, 500)
    End Sub
End Class 

ついでに一つ技術提供してやる。
URL貼ったってどうせニセ(笑)とか言って見ねぇだろうからキーワードだけ教えてやるよ。
アンマネージリソースの解放
Dispose
Using

投稿者 ぼく  (小学生) 投稿日時 2008/10/17 00:51:22
でけた。(^^@)
VisualBasic2008無料版

Option Strict On
'10/16_org
Public Class Form1
    '色の回転例
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Dim i As Integer = &H78FF0000
        Dim ii As Integer
        For ii = 0 To 10
            Dim Brush As New SolidBrush(Color.FromArgb(i + ii * 10))
            e.Graphics.FillEllipse(Brush, 100 + ii * 10, 100, 200, 200)
        Next
        i = &H7800FF00
        For ii = 0 To 25
            Dim Line As New Pen(Color.FromArgb(i + ii * 10))
            e.Graphics.DrawLine(Line, 100, 320 + ii * 5, 300, 320 + ii * 5)
        Next
        Dim line1 As New Pen(Color.FromArgb(78, 255, 0, 0))
        e.Graphics.DrawLine(line1, 100, 500, 300, 500)
    End Sub
End Class
投稿者 ぼく  (小学生) 投稿日時 2008/10/17 00:36:57
n?さん
&H78123456
これを直接いじると16進数のX乗で処理しなければならず計算処理が余分に必要かと。
intでちょっとやってみます。(^^)
投稿者   (社会人) 投稿日時 2008/10/16 23:35:35
Color.FromArgb(Int32, Int32, Int32, Int32)

あ、はんどあせんぶらーな人には必要ないか。
投稿者 ぼく  (小学生) 投稿日時 2008/10/16 23:13:07
成功!!勉強は小1時間!!
色が回転できました~(^^)
&H78ff0000
ここをいじくると、グリグリ色が回転できました。!!ははあはーこりゃ面白い!
投稿者 ぼく  (小学生) 投稿日時 2008/10/16 22:26:26
うへぇ~。。がーーん!むずかしぞ!ARGBめ
VisualBasic2008(無料版)
Dim g As Graphics = e.Graphics

    ' Transparent red, green, and blue brushes.
    Dim trnsRedBrush As New SolidBrush(Color.FromArgb(&H78FF0000))
    Dim trnsGreenBrush As New SolidBrush(Color.FromArgb(&H7800FF00))
    Dim trnsBlueBrush As New SolidBrush(Color.FromArgb(&H780000FF))

    ' Base and height of the triangle that is used to position the
    ' circles. Each vertex of the triangle is at the center of one of
    ' the 3 circles. The base is equal to the diameter of the circle.
    Dim triBase As Single = 100
    Dim triHeight As Single = CSng(Math.Sqrt((3 * (triBase * _
    triBase) / 4)))

    ' Coordinates of first circle
    's bounding rectangle.
    Dim x1 As Single = 40
    Dim y1 As Single = 40

    ' Fill 3 over-lapping circles. Each circle is a different color.
    g.FillEllipse(trnsRedBrush, x1, y1, 2 * triHeight, 2 * triHeight)
    g.FillEllipse(trnsGreenBrush, x1 + triBase / 2, y1 + triHeight, _
    2 * triHeight, 2 * triHeight)
    g.FillEllipse(trnsBlueBrush, x1 + triBase, y1, 2 * triHeight, _
    2 * triHeight)
ん\form1_paintイベント内
投稿者 ぼく  (小学生) 投稿日時 2008/10/16 07:39:18
いやぁ。ジェイサン。ども。
functionの練習用です。ぼくは、基礎構築の段階なんです。基礎ばかりだとつまらないので、たまに上のランクをやったりします。
三角関数、アふぃん変換は勉強終了しました。
次の基礎構築はクラス。
投稿者 じぇい  (社会人) 投稿日時 2008/10/16 07:24:09
Math クラスには PI というフィールドがあるのだが。。。
http://msdn.microsoft.com/ja-jp/library/system.math.pi(VS.80).aspx

Pen クラスは、IDisposable だなぁ。。。
http://msdn.microsoft.com/ja-jp/library/system.drawing.pen(VS.80).aspx

SinCos って、なんのためにあるんだろう?って、クラス変数か!!しかも public (笑)

赤と黒が、交互じゃないの?0度から10度まで1度ずつを一瞬で描画するんだ。ふ~ん。。。
投稿者 ぼく  (小学生) 投稿日時 2008/10/16 06:55:04
ありました。helpに。
ども。(^^)
投稿者   (社会人) 投稿日時 2008/10/16 01:07:29
ごめん、赤一色じゃなくって赤と黒みたいだね。

Colorクラスの各プロパティを使おうとすると限りはある。
50よりは多いけど。

同系色で少しずつ色を変えたいなら、マラさんの言うようにARGB指定かリストを作るしかないね。

Color.FromArgbでできるんじゃない?
投稿者 マラ  (小学生) 投稿日時 2008/10/15 09:57:25
結局何がしたいのかわかんねーよ

>400万色使えるはずなのに、50色くらいしか現状は使えないのだ。
50色て。システムカラーだけでももう少しあるだろ。
もっと使いたきゃARGB指定すりゃよかろーもん。

>例えば、青1~青10とか。シンプルに
自分でリスト作るしかないな。


それと、コード書くならタグで囲え、見辛いから。
投稿者 ぼく  (小学生) 投稿日時 2008/10/15 09:07:58
nさん>ども。
例えば、青1~青10とか。シンプルに。
400万色使えるはずなのに、50色くらいしか現状は使えないのだ。
for i=0 to 10
color(i)
next
みたいな感じでできないかなぁ?
自分で探すのも時間がかかるので。(マテ)
投稿者   (社会人) 投稿日時 2008/10/15 08:52:47
「色を回転させる」ってのがよくわからん。
色を順番に変化させるのかと思ったけど、どうやら赤一色みたいだし。

とりあえず、描画処理はOnPaintでやったほうがいいかな。
投稿者 サラダ  (社会人) 投稿日時 2008/10/15 05:22:37
>ニセの馬君に用はないよ。
なるほど。自分がキチガイと気づいたか。
投稿者 ぼく  (小学生) 投稿日時 2008/10/15 02:54:04
ニセの馬君に用はないよ。
out of 眼中だ。
やま先生、お願いしまーす。
投稿者 ぼく  (小学生) 投稿日時 2008/10/15 02:33:38
はいはい、初心者で馬鹿な消防(ではないと思うが)は外で元気に遊んでな。
投稿者 ぼく  (小学生) 投稿日時 2008/10/15 02:23:45
今、functionの初心勉強を終了しました。
そこで、今度は色を回転させたいんです。
Public Class Form1
    Public x, y As Integer
    Public CL As Pen
    Public X1, Y1 As Integer '描画位置

    Public Function SinCos(ByVal nagasa As Integer, ByVal kakudo As Integer) As Integer
        x = CInt(nagasa * Math.Cos(kakudo * 3.14159 / 180))
        y = CInt(nagasa * Math.Sin(kakudo * 3.14159 / 180))
        Return x And y
    End Function
    Public Sub Line()
        CL = New Pen(Color.Black)
        For i As Integer = 0 To 10
            SinCos(100 + i * 20, i * 10)
            X1 = 100 + i * 20
            Y1 = 100 + i * 10
            If i > 5 Then
                CL = New Pen(Color.Red)
            End If
            Me.CreateGraphics().DrawLine(CL, X1, Y1, X1 + x, Y1 + y)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Line()
    End Sub
End Class
ね。
CLのとこ。