はじめまして。
不明点がありどうしてもわからないので投稿させていただきましたが
解決いたしました。有難うございました。感謝です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
コードは ``` で囲ってください
2016/10/07 02:00
回答が付いた質問の編集は慎重に行ってください。タイプミス程度なら修正する事もありますが、本文を削除するのはやめましょう。過去の投稿を表示できるので、それを使って記事を復元してください。https://teratail.com/questions/history-questions/50230
回答1件
0
ベストアンサー
this.BackColor = System.Drawing.Color.Red;
このthisはForm1(恐らくメインフォームですよね?)を指しています。これの色を変えるということはForm1(恐らくメインフォーム)全体が塗りつぶされるということです。
まずはこのあたりを参考に一つの四角形をちゃんと描画できるところから確認してみるとよいと思います。
塗りつぶした図形を描く
それができたら、次に4つくらいを並べて描画してみてください。
(今のコードを見る限り、そのまま実行すると不思議な図形が描画されるような気がします)
new Rectangle(i,i,100,100)};
そこまでできたら本来の実装を試みるというのが最短ではないかと具申してみます。
追記
こっちの塗りつぶしの方がやりたいことに近いかもしれません
領域を塗りつぶす
投稿2016/10/04 05:54
編集2016/10/04 06:00総合スコア1294
ishi9さん
いつも有難うございます。
本当に助かっています。
早速ご教授有難うございます。
四角形の数字の値をおいてしてみました。
この四角形にマウスがくると自動的に赤色にしたいと思ってます。
<赤色の変更箇所>をForeColor = System.Drawing.Color.Red;
と仮定しましたが色は変化せず。。といったところです。
"fore"を"back"にすると背景になる。といったところで
四角形にフォーカスして実装したときはどのように仮定すればよいのでしょうか。
お忙しい中恐れ入りますが、ご教授いただければ幸いです。
for (int i = 20; i < 400; i++)
{
Rectangle[] recst = {
new Rectangle(1,3,100,100) };
Rectangle Mousemove = default(Rectangle);
if (recst.Contains(Mousemove) == true)
{
}
else
{
ForeColor = System.Drawing.Color.Red;
}
ForeColor = System.Drawing.Color.Red;
これは省略しているだけで
this.ForeColor = System.Drawing.Color.Red;
としているのにかわりはありません。
つまり画面全体を処理するコードになってしまっています。
(後、恐らくですがただのformクラスはForeColor設定しても特に変化はないと思います)
今のコードだと
Rectangle[] recst = { new Rectangle(i,i,100,100)};
まずこれは配列の意味がないので
Rectangle recst = new Rectangle(i,i,100,100);
に直してください。
次に
ForeColor = System.Drawing.Color.Red;
のところを
g.FillRectangle(Brushes.Red, recst);
と書き換えれば、とりあえず赤い図形が描画されるとは思います。(多分望んだ形ではないでしょうが)
それができたら、いきなり400(for文を見る限り380個ですが)
ではなく、まずは一つだけ描画してみてください。
次に2,4と数を増やして、なぜそこに描画されるのかを考えてみてください。
(大きさやx,yの位置をいろいろいじってみてください。)
そうすれば400個を正しい位置に配置できるようになると思います。
-----------------------------------------------------------------------------------
以下は一通り落ち着いたら、読み直してください。
マウスをクリックする度に400の図形を生成して描画する処理はもしかしたら重すぎてまともに動かないかもしれません。
コードの理解が進んできたら次のステップとして、
・図形の描画はForm1_Load関数で済ませる
・pictureBox1_Click関数の中に四角形とマウスが接触しているかの判別式が入ってしまっているのでMouseMove関数に処理を移す(関数名を変えれば変わるわけではないので注意)
ishi9さん
いつも有難うございます!
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。