グラフィックス への返答

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

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

投稿者 緋竜  (小学生) 投稿日時 2008/10/26 02:08:10
ぼくです。名前を緋竜に改めました。
アンのトコは日本語の方が良いかな?
まぁ、なにかと英語ですから。アメリカの製品だから、しょうがないか・・
投稿者 さくら  (社会人) 投稿日時 2008/10/25 18:20:37
一応C#とJavaを現在主に使っています。主にWebアプリとWindowsアプリをしてる感じです。
携帯電話は、専門外です。すいません。
VBも、プログラミングする速度がC#やJavaより遅いけど書けます。

ぼくさんは、アンマネージドなリソースと、マネージドなリソースについて学習されたほうがいいと思います。
理解されてるのでしたら、余計なお世話ですのでスルーしてください。
でも、逆に理解してるのでしたら、きちんとしたコードを載せて頂いたほうが10万人の初心者にとって有意義なものになると思います。

因みに、最新のVS2008が対象のCreateGraphicsにもDisposeしなさいという記述はあります。
URL: http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.creategraphics.aspx

投稿者 ぼく  (小学生) 投稿日時 2008/10/25 12:22:43
さくらさんは、SanJavaだろ?専門が。携帯とかさ。
個人的には理解したが。。。10万人の初心者には無理だな。
っか修正されてるだろ。
配列が自動処理でグラフィックスは手動ってさぁ。そりゃワロス。
CreateGraphics()
e.Graphicsのときに逆にまずいようだ。
イベントハンドラでは、Disposeは使用禁止。
無料版のヘルプは古いしリアルタイムではない。
したがって現在進行系の情報が必要である。
以上。
投稿者 さくら  (社会人) 投稿日時 2008/10/25 10:07:25
問い合わせる前にMSDNライブラリのCreateGraphicsに書いてありますよ~
--引用--
返された Graphics は、必要がなくなった時点で、Dispose メソッドを呼び出して破棄する必要があります。Graphics は、現在のウィンドウのメッセージの存続期間だけ有効です。
--------

ちょちょっと実行するだけのサンプルなら致命的なことにはならないですが、長時間動くようなアプリだと不安定になったり止まったり落ちたりするようなことが起きると思います。
投稿者 ぼく  (小学生) 投稿日時 2008/10/25 07:09:58
君の名前はアレだ。
以上。
ジャンヌの2005の古い掲示板に行けば?
投稿者 ぼけ  (社会人) 投稿日時 2008/10/25 06:36:51
ぼくちゃんたちは、他の掲示板にいって暴れてきてください。
ここは神聖な掲示板ですよ。
他に陰口をたたいている悪しき掲示場にこそ貴殿の毒舌をまきちらしてはいかがかな?
ここは、まじめな方ばかりの掲示板ですよ。
投稿者 ぼく  (小学生) 投稿日時 2008/10/25 04:59:28
このコードはクリームパン用に2005仕様にしてるだけだ。
そもそも2005の解説をしてるジャンヌとかのコードは、あてになるのか?(苦笑)
DisPose()は必要なものなんですか?ちゃんと問い合わせしろよ。
Public Sub New()

        ' この呼び出しは、Windows フォーム デザイナで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。

    End Sub
これと、どう違うんだ?
まぁ、2005のセミプロに質問しても返答できないんじゃないのかい?
2008は新しいからね(皮肉)
投稿者 ????  (社会人) 投稿日時 2008/10/25 02:06:53
>バグを修正するのはマイクロソフト社の当たり前の処置。
お前のバグ修正してたらマイクロソフト破産じゃねーかwwwww
コードにもカビ生えとるぞww
投稿者 ぽく  (小学生) 投稿日時 2008/10/22 06:15:36
池田某さんと自分のコードが一緒だと思ってる所が哀れ。
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 22:43:12
Option Strict On
Public Class form1
    '_____________________________VisualBasic2005以上 
    Private f As Boolean
    Private Px, Py As Integer
    Private g As Graphics

    Private Sub form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
        f = False
        g = Me.CreateGraphics()
    End Sub

    Private Sub form1_MouseClick(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
        If f = False Then
            Px = e.X
            Py = e.Y
            g.DrawRectangle(Pens.Red, Px, Py, 1, 1)
            Me.Text = ("終点をクリックしてください")
            f = True
        Else
            g.DrawRectangle(Pens.Red, e.X, e.Y, 1, 1)
            g.DrawLine(Pens.Black, Px, Py, e.X, e.Y)
            Me.Text = "始点をクリックしてください"
            f = False
        End If
    End Sub
End Class

某、池田先生のコードだ。丸写しだとアレなんで、少し変更した。
usingは使ってないな。(大先生のコードだぞ)
投稿者   (社会人) 投稿日時 2008/10/21 19:37:17
>誰が作ったプログラムでも安心して動くのがBasicのはず。
ぶはwwwwwwwwwwふいたwwwwwwwww
そんなわけねえwwwwwwwwwwww

>basicは最上級言語である。以上。
上級って意味を間違ってないかwwwwwwwwwwwwwwうぇwwwwwwwwwwwwww
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 19:18:28
nさんの発言でいろいろ見えたよ。
Basicだけしかやってないだろ?
stdioの人はC#とC++が使えるはず。
オブジェクトを新しく作る場合、必要領域*2のはず。憶測でアレだが。復元用もしくは、修正用の領域もkeepしてるからだ。まぁ、説明してもnさんには無理くさい。
誰が作ったプログラムでも安心して動くのがBasicのはず。
したがって、バグを修正するのはマイクロソフト社の当たり前の処置。
初心者が何万人いるとおもってるんだ?
いちいち失敗プログラムで暴走してたら危ないだろ。
それならBasicの名前を変えるべきだね。
{上級者しか使えないBasic}とか(笑)
basicは最上級言語である。以上。
投稿者   (社会人) 投稿日時 2008/10/21 17:53:32
>nさんがきちんと説明すれば良いじゃん。
やだよ。めんどくさい。
それにここは俺が作ったBBSじゃないし。

>ぼくは初心者4ヶ月ですよ。
>ぼくはマシン語の下地があるから理解できるが・・
それならマシン語でやれば?無理にVB使う必要ないんじゃない?

>であれば、入門者や初級者は実際には理解できないはずだ。
4ヶ月もあれば十分理解できると思うよ。

>マイクロソフトのサンプルと同じ事。モーマンタイ。ノープロブレム。問題なし。
それとは違うよ。Microsoftは注意書きをしている。
君のはコードのみ。

>気をつけるのは変数の数字だけ。いじるんならTry..ステートメントを使ってね。
君が気をつけたら?

>4ヶ月の初心者(僕)と討論してもしょうがないだろ。
討論まで初心者(笑)か?年齢とか関係なく討論はできるだろw

>ワーム化して増えてた。と考えられるね。
だから「ワーム化」ってなんだよ。何がワームに変わるんだよ。

>次々と増える普通バグ。
なんだよ、普通バグってwww
普通のバグと、普通じゃないバグを説明してよ。

投稿者 ぼく  (小学生) 投稿日時 2008/10/21 12:36:22
4ヶ月の初心者(僕)と討論してもしょうがないだろ。POクが貼り付けたURLは去年の12月だ。貧弱なアレで容量は増えてたはず。
改善されたのは、それ以降。したがって、ワーム化して増えてた。と考えられるね。
オブジェクト領域>(仮)千バイト領域を確保、そして新しく千バイト、別の領域に作る、次々と増える普通バグ。
で、改善されたんだろう(笑)多分。
それから、まぎらわしい名前も変更しろよ。
POKU。まぁこれなら良いよ。
投稿者 ぽく  (小学生) 投稿日時 2008/10/21 11:33:29
>マイクロソフトのサンプルと同じ事。
(訳)まいくろそふとがやってるから僕もやっていいんだぁ!
まるで黴の生えた蜜柑みたいな考え方だな。
同じ小学生として恥ずかしいね。

マイクロソフトのサンプルが不完全なのと、お前のコードがウンコなのは全然関係ない話だろう。

>インスタンスは問題ない。デフラグメーターで調べた。
でふらぐめぇたぁ??
未解放のメモリがデフラグツールで監視できるとは知らなかったなぁ(棒)
あーお腹が捩れるー
一応聞いてやるけど、どうやって調査した?
手順を示しな。

>したがって容量は増えない。
当たり前だ。容量が増えてたまるか。
投稿者   (小学生) 投稿日時 2008/10/21 10:09:40
問題?
マイクロソフトのサンプルと同じ事。モーマンタイ。ノープロブレム。問題なし。
気をつけるのは変数の数字だけ。いじるんならTry..ステートメントを使ってね。
インスタンスは問題ない。デフラグメーターで調べた。
2008は強化されてる。一度作られた領域を何度も使うようになってる。
したがって容量は増えない。
以上。
特殊コード、明日、見とくよ。
投稿者 ぽく  (小学生) 投稿日時 2008/10/21 09:54:21
>クリームパンを叱るのはオカシイし、ぼくのコードにケチをつけるのもおかしい。

問題のあるコードをしたり顔で公開されると他の初心者さんが混乱するだろう。
未完であることも明示せずに「教材にしてね。」はないな。

それといい加減特殊コードを使おうや。
http://rucio.groupsite.jp/commu/Usage.aspx
折角管理人さんが用意して下さってる機能だ、使わなきゃ勿体ないだろうが。
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 09:24:57
nさんがきちんと説明すれば良いじゃん。
ぼくは初心者4ヶ月ですよ。
インスタンスの破棄。これは作った場所、仮&H00000000~&H00010000の領域を開放するとゆう意味だろ?
ぼくはマシン語の下地があるから理解できるが・・2級と3級(資格持ち)の人は無理だな(多分)
であれば、入門者や初級者は実際には理解できないはずだ。
クリームパンを叱るのはオカシイし、ぼくのコードにケチをつけるのもおかしい。
投稿者   (社会人) 投稿日時 2008/10/21 08:30:54
>ぼくのも、短い行のコードですけど。

なんか勘違いしてるね。
短いコードとサンプルコードは意味が違う。
君のは「やってみたらできた」程度でしょ。
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 05:56:44
ぼくのも、短い行のコードですけど。
これを実行する人は、数字のトコをいじらないように。以上。
投稿者   (社会人) 投稿日時 2008/10/21 05:28:32
>マイクロソフトのサンプルは、例外処理のないのが多い。
>ルキオ先生のプルグラムサンプル(sound系)のオーバー風呂の処理がない。

サンプルはサンプルだ。
それだけで十分と思う方が間違い。
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 03:36:39
一言多い?
マイクロソフトのサンプルは、例外処理のないのが多い。
ルキオ先生のプルグラムサンプル(sound系)のオーバー風呂の処理がない。
とゆうわけで、まぁアレです。
以上。
投稿者 ぼく  (小学生) 投稿日時 2008/10/21 03:03:50
クリームパンが叱られてるな。。ははあ?アレ、ぼくと同じだ。
Using reader As New streamReader("boku.txt")
textBox1.Text=reader.readToEnd
end Using
おお某(勇先生)の本にあった。
Tryでもオケ?
basicで、やはり走るらしい(笑)走らんようにしとけ(マイクロソフト)
投稿者 ぼく(本物)  (小学生) 投稿日時 2008/10/19 11:05:24
Disposeか?
すごい難しいなぁ(笑)
・・・・・・
・・・・・・
投稿者 ぼく(本物)  (小学生) 投稿日時 2008/10/19 10:38:22
一応、見てみるよ。
ぼくのオリジナルコードだから、どこにも無いよ(2D)
はいプレゼント。教材にしてね。
Option Strict On
'時計///timer1コンポーネントが必要(VisualBasic2008)
Public Class Form1
    Private g As Graphics
    Private C_ As Pen
    Private x, y As Integer
    Private R_ As Double
    Private x1, y1, z As Integer
    Private Function CosS(ByVal nagasa As Integer, ByVal kakudo As Integer) As Integer
        R_ = (kakudo + 270) * 3.14159 / 180
        x = CInt(nagasa * Math.Cos(R_))
        y = CInt(nagasa * Math.Sin(R_))
        g.DrawLine(C_, 150, 150, 150 + x, 150 + y)
    End Function
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        g = Me.CreateGraphics()
        Me.BackColor = Color.Black
        Me.Timer1.Interval = 200
        Me.Timer1.Start()
    End Sub
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Refresh()
        x1 = 100 : C_ = New Pen(Color.Blue)
        y1 = Now.Second * 6 : CosS(x1, y1)
        x1 = 70 : C_ = New Pen(Color.Green)
        y1 = Now.Minute * 6 : z = y1 : CosS(x1, y1)
        x1 = 40 : C_ = New Pen(Color.Red)
        y1 = Now.Hour * 30 + CInt(z / 12) : CosS(x1, y1)
    End Sub
End Class
投稿者 ぽく  (小学生) 投稿日時 2008/10/19 08:08:30
ソースは特殊コードで囲えと言っただろう。
アンマネージリソースの解放についても注意しただろう。

そんなだからお前はボンクラなんだ。

るしぇさんの投稿ソースを改悪してなにが勉強だ、片腹痛い。

調べるだけの知恵が無いなら仕方が無い。
どうせ読まないだろうけど参考URLを貼っておこう。
http://msdn.microsoft.com/ja-jp/library/498928w2.aspx
投稿者 ぼく(本物)  (小学生) 投稿日時 2008/10/19 06:08:45
今日の勉強は終了。面白いなぁBasic.
Option Strict On
Imports System.Drawing.Drawing2D
'Button1とtime1コンポーネントが必要です(VisualBasic2008)
Public Class Form1
    Private g1 As Graphics
    Private r, g, b As Integer
    Private kaiten As New Point(160.0F, 160.0F)
    Private twoD As New Matrix
    Private co_lor As SolidBrush
    Private RND As System.Random

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        RND = New System.Random()
        r = RND.Next(100)
        g1.Transform = twoD
        g = RND.Next(50, 255)
        Threading.Thread.Sleep(10)
        b = RND.Next(50, 255)
        co_lor = New SolidBrush(Color.FromArgb(78, r, g, b))
        twoD.RotateAt(6, kaiten, MatrixOrder.Append)
        g1.FillEllipse(co_lor, 150, 150, 154, 154)
        b = RND.Next(255)
        co_lor = New SolidBrush(Color.FromArgb(78, 155, 155, b))
        g1.FillEllipse(co_lor, 0, 0, 300, 300)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        With Me.Timer1
            .Interval = 200
            .Enabled = True
        End With
        With Me
            .Width = 350
            .Height = 380
            .BackColor = Color.Black
        End With
        Me.Button1.Visible = False
        g1 = Me.CreateGraphics()
    End Sub
End Class