标题:PictureBox的背景色问题
只看楼主
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
结帖率:86.21%
 问题点数:0 回复次数:6 
PictureBox的背景色问题
程序代码:
using System;
using System.Collections.Generic;
using using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            InitBackColor();
        }

        private void InitBackColor()
        {
            Graphics g = pictureBox1.CreateGraphics();
            g.Clear(Color.Red);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            InitBackColor();
        }
    }
}
代码如上:我在Form里边放了一个PictureBox,并将它的BackColor设置Black。我希望在界面初始化的时候,能把颜色刷成红色。如上,同是调用InitBackColor()函数,构造函数中不能做,而Button1的点击事件却能实现把颜色刷成红色。搞不懂怎么实现在构造函数中能搞定?
搜索更多相关主题的帖子: PictureBox 
2010-11-24 15:50
筱晓绾
Rank: 10Rank: 10Rank: 10
来 自:湖南
等 级:贵宾
威 望:12
帖 子:512
专家分:1736
注 册:2010-9-1
得分:0 
InitializeComponent()这是什么方法,自己写的吗?直接把InitBackColor()放到上述方法中,在页面加载的时候调用InitializeComponent().
2010-11-24 15:53
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
得分:0 
回复 2楼 筱晓绾
InitializeComponent()是窗体的初始化函数,上面也就放了一个button和一个PictureBox的。设置了下PictureBox的背景色。
我把InitBackColor()方法放到load方法也不行的
        private void Form1_Load(object sender, EventArgs e)
        {
            InitBackColor();
        }

 
2010-11-24 15:59
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:0 
//Graphics g = pictureBox1.CreateGraphics();
 //g.Clear(Color.Red);
这段代码的问题
当我把代码换成   pictureBox1.BackColor = Color.Red; 就可以了
但是为什么会是这样呢?
写在paint事件里面当窗体绘制的时候就会执行  楼主肯定会问为什么 这是因为 执行load的时候Paint还未执行
个人猜测点击click 绘制颜色的时候也会执行paint事件 试了一下果然是这样 楼主不妨跟个断点看看
private void Form1_Paint(object sender, PaintEventArgs e)
{
  InitBackColor();
}
这样也能保证窗体刷新后绘制的图形不会被刷掉
而load 事件还未加载完成 放在构造函数里就更早啦 希望对楼主有帮助 另外也建议楼主详细了解winform的生命周期

        

[ 本帖最后由 wangnannan 于 2010-11-24 16:09 编辑 ]

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-11-24 16:08
筱晓绾
Rank: 10Rank: 10Rank: 10
来 自:湖南
等 级:贵宾
威 望:12
帖 子:512
专家分:1736
注 册:2010-9-1
得分:0 
也是,控件的颜色控制没必要搞的很复杂,直接赋颜色值就可以了...
2010-11-24 16:47
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
得分:0 
回复 4楼 wangnannan
貌似有那么点意思,可跟踪paint事件好麻烦呀。
而且我把InitBackColor放到paint事件里,第一次不行的,随便动动窗体,动动鼠标才有,整的好奇怪呀。。
2010-11-24 16:52
南川
Rank: 4
等 级:业余侠客
威 望:1
帖 子:111
专家分:235
注 册:2010-6-25
得分:0 
回复 5楼 筱晓绾
我也想直接赋值呀,这里不只是颜色一项设置的,我还需要执行画图等动作的。只能这样呀,烦。。
2010-11-24 16:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326750-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.169809 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved