C# GDI+问题:如何在启动窗体之后直接在PictureBox上显示图形?

各位大神,菜鸟求助。我在窗体(Form1)新增了一个PictureBox控件pictureBox,想在窗体启动后在pictureBox上画一个跟pictureBox一样大的矩形,按按钮切换pictureBox的大小,矩形跟着改变。代码如下。现在碰到的问题是:
1. 窗体启动后pictureBox上没有显示矩形。
2. pictureBox从小切换到大的时候,picutreBox的尺寸的确变了,但画出来的矩形是改变前尺寸的大小。按理说调用Init()后再调用Draw()函数的,画出来的矩形该跟pictureBox一样大才对?
感觉这个问题该挺好解决的,就是找不到解决方法,在这里求助各位大神了,非常感谢!
代码:
public partial class Form1 : Form
{
private int option = 0;
public Form1()
{
InitializeComponent();
Init();
Draw();
}

    private void Form1_Load(object sender, EventArgs e)
    {
        pictureBox.Location = new Point(50, 80);
        pictureBox.BackColor = Color.White;       
    }
    private void Draw()
    {
        Graphics graphics = pictureBox.CreateGraphics();
        graphics.DrawRectangle(Pens.Black, new Rectangle(0, 0, pictureBox.Width - 2, pictureBox.Height - 2));
        graphics.Dispose();
    }

    private void Init()
    {
        if (option == 0)
        {
            pictureBox.Size = new Size(100, 100);
        }
        else if (option == 1)
        {
            pictureBox.Size = new Size(200, 200);
        }
        else if (option == 2)
        {
            pictureBox.Size = new Size(300, 300);
        }           

        this.ClientSize = new Size(pictureBox.Width + 100, pictureBox.Height + 100);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        option = (option + 1) % 3;
        Init();
        Draw();
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何在直接在静态控件上作图?
对话框里的一静态控件,我想在该区域画一张图表,请问该如何实现?
如何在PictureBox中绘制窗体上控件的图形
比如窗体中有一个Grid和一个PictureBox控件,我想把Grid的的外观保存为Image并显示在PictureBox中,如何实现?
C# 如何在PictureBox控件中移动图形?
1.VS 2008;rnrn2.实现移动PictureBox上的一个曲线图形,类似于Google地图,上下左右可以即时移动。
直接在窗体上输出文字
如题rn把要显示的文字直接在窗体上特定的位置显示出来,rn而且所显示的文字要有置顶的效果,比如能在一个控件的上方显示.
如何直接在窗体上输入中文?
如何直接在窗体上输入中文rn我建了个窗体,想在窗体上写汉字,可切换中文时,输入法窗口被隐藏了,如何将它显示出来?rn如何获得中文??
C# 测试类,直接在程序中启动
在项目中,很多时候我们需要测试某个方法中的一个方法,那么我们可以构建那样的方法,直接调用,这时候需要一个测试类,在C#中有专门的测试类库,Microsoft.VisualStudio.TestTools.UnitTesting,直接引用就行,再在类上添加TestClass特性和方法上添加TestMethod。右击含有TestMethod的方法“调试测试”!即可 using System; usin...
C#中如何在picturebox上画图?
还是只能在winform上画图?
直接在窗体指定位置写字
很多人使用Delphi时候显示字体都是用Label,现介绍可以直接在Form上直接显示字体的办法
如何在PictureBox上画点???
我知道在PictureBox上画线、画矩形,可我找不到画点的呀??rn请各位高手帮忙。
如何在picturebox上显示字符
我想在PICTUREBOX上显示字符
不用pictureBox,怎么直接在From上显示图片
如题.rn看看大家都有什么方案.rn
无边窗体怎么最小化(控件不是直接在窗体上)
问题1:rnrn 最小化图片是放在panel上的,如果不使用panel我担心以后窗体大小变化会造成图片位置错位,但以下代码必须是控件放在窗体上的rn((Form)this.Parent).WindowState = FormWindowState.Minimized;rnrn问题2:rnrn 现在美工为了整体界面统一,要求将主窗体(MDI父窗体)也做成无边的,我大概试了一下,可能可以,就不知道以后在程序运行时会出现什么问题,比如分辨率改了以后控件位置是否会出现问题,我现在很多控件都设置DOCK属性了。或者还有其他什么可能出现的问题。
如何在jsp页面上显示图形?
如题,是从oracle中提取出来的
如何在网页上显示AUTOCAD图形?
在网上列出数据库表,其中一项为AUTOCAD图形 应如何显示?
picturebox控件显示图形问题?
用picturebox显示画出的图形,可是当该窗体被其他窗体遮住后,图形就没有了,请问该怎么解决,代码如下。rnrnPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickrnrn Dim g As Graphicsrnrn g = PictureBox1.CreateGraphicsrn rn Dim p As New Pen(Color.Black)rnrn g.DrawLine(p, 0, 0, PictureBox1.Width, PictureBox1.Height)rnrnEnd Sub
c# GDI +图形
编写gdi图形的简单介绍,常备知识,这是我老师总结出来的多年经验
c# GDI 图形移动
c# GDI 图形移动 wince .net
请教:如何在PictureBox上进行图形重绘
作了一个简单的测试程序,在FORM1中加入一个TABCONTROL,在tabPage1上添加一个PictureBOx。rn目的:在Tabpage切换tabpage1时,在 PictureBOx 自动绘制一个椭圆,切换到tabpage2时,绘制另一个椭圆。rn结果:再PictureBOx 自动绘制的椭圆一闪而过;而切换到tabpage2时,成功绘制另一个椭圆。rn源程序如下:请大家指点,谢谢!rnrnpublic partial class Form1 : Formrn rn public Form1()rn rn InitializeComponent();rn rnrn Graphics grPic;rn Graphics grPage;rn private void Form1_Load(object sender, EventArgs e)rn rn grPic = this.pictureBox1.CreateGraphics();rn grPage = this.tabPage2.CreateGraphics();rn rnrn private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)rn rn if (this.tabControl1.SelectedIndex == 0)rn rn grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);rn // 这个只能一闪而过。rn rn elsern rn grPage.DrawEllipse(Pens.Red, 110, 10, 100, 150);rn //这个可以显示rn rn rnrnrn private void pictureBox1_Paint(object sender, PaintEventArgs e)rn rn grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);rn //仍然不成功rnrn rn
如何在窗体上显示当前时间?
谢谢
如何在窗体上显示gif动画,(多帧的)
如何在窗体上显示gif动画,(多帧的)rn最好有源码,发给我rn80fight@163.com
如何在窗体上显示表格和流程图
我想在窗体上显示并编辑表格和流程图,应该用什麽控件和方法。
C#如何在关闭一个窗体之后打开另一个窗体
假设登入窗体Frm_Login;主窗体Frm_Main;rn在program里面写:Application.Run(new Frm_Main());rn接着在Frm_Main的Load事件中写:rnFrm_Login frm_login=new Frm_Login();rnfrm_login.showdialog();rn这样就基本OK了;
C#如何在窗体上画点
我要做一个凸包求解的程序,现在刚开始。我向用鼠标点击窗体,点击处生成一个有颜色的小点,点击若干次后停止,然后点击按钮来画凸包。现在就是不知道怎么使得鼠标点击处留下一个醒目的小点,C#有没有画点的函数,或者怎么达到我要的类似的效果。
vb.net c# 在picturebox中用GDI画图问题
大家好,请教一个困惑很久的问题,我想在vb.net或者C# 的picturebox控件中画一个折线图,面临如下问题:rn1.坐标系转换rn2.像素与x轴数字个数的关联问题rn我不想使用ZedGraph或者MSChart解决此问题,从技术角度,还是想用GDI解决此问题rnrn代码我写了一部分,需求在里面用注释的形式写下,新建一个工程后,拖一个按钮,一个picturebox.按钮中代码如下:rn Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickrn Dim w As Integer = PictureBox1.Width '图像宽度 单位:像素rn Dim h As Integer = PictureBox1.Height '图像高度 单位:像素rn Dim mybitmap As Bitmap = New Bitmap(w, h)rn PictureBox1.Image = mybitmaprn Dim Graph As Graphics '定义画布rn Graph = Graphics.FromImage(PictureBox1.Image) '设置画布rn Graph.Clear(Color.Black)rnrn Dim arr(6) As Integer '定义一个7个数组成的数组rn arr(0) = 200rn arr(1) = 262rn arr(2) = 88 '最小值rn arr(3) = 422rn arr(4) = 219rn arr(5) = 333rn arr(6) = 526 '最大值rnrn '假设picturebox宽度是314,高度是212rn '问题1:重新建立我们熟悉的坐标系,左下角为(0,0),右上角为(7,526),7是表示数组个数rn '问题2:在此坐标系之上7个点连成一个折线图rn '问题3:难道真的要手动计算每个点的像素位置吗?或者说坐标,比如左边第一个点的X轴坐标就是w/7,这样获得的是一个小数啊rn '数据少的时候可以cint一下,误差还好.但是当arr这个数组的长度比较大的时候,比如9999,而picturebox的宽度比如是200的时候,误差也会越来越大rn '有什么方法可以将数组的长度和picturebox的像素比较方便的结合起来或者不用我们去理会,就像过去vb6时rn '可以使用 Picture2.Scale (x1, y1)-(x2, y2)一样比较方便的设置scale,而不用去考虑像素问题rnrn '我不想使用zedgraph或者mschart这些控件,我相信应该有解决方法,因为这些控件的底层不也是按照GDI的原理画出来的吗rn '谢谢大家!!!!!rnrnEnd Sub
如何在C#的窗体里显示网页?
比如通过调用预先设好的网页路径,然后显示在C#中的窗体里
如何在c#显示一个窗体啊
是form.show吗rn不好意思我是初学者
(200分求解)★★★★如何在指定的窗体中画线(非直接在屏幕上)★★★★★
Getwindowdc(0)或Getdc(0),都只是在屏幕上作图.rnGetWindowdc(me.hdc)或Getdc(me.hdc)可以在窗体上画图.但是窗体如果有按钮之类的控件,就不能在按钮上直接画图了.rnrn看到别人的分隔条拖动时,它是在窗体上画线,遇到有按钮之类的控件,也可以直接画上去,但它并不是直接画屏幕的,因为如果分隔条拖动时,它的前面有一个最前的窗体时,最前的窗体是没有画线的.rnrn看来,还有一个GetXXXDc之类,可以求得窗体的hdc吧.这个hdc,是可以满足到我的需要的.rn请各位大虾多多旨教.rnrn
(200分求解)★★★如何在指定的窗体中画线(非直接在屏幕上)★★★(接分)
解决了难题的感觉,很是高兴.原贴地址:rnrnhttp://community.csdn.net/Expert/topic/3733/3733308.xml?temp=.7947504rnrn请songyaowu(不以分多而蹭之;不以分少而不答;习惯不结贴者拒之)来接分.rnrn
请教如何直接在Winform窗体上输出文字?
在winform界面上直接输出文字内容,并控制文字的大小样式,请问怎么做?
在VB.NET中可以直接在窗体上打印文本吗?
哪位大哥帮个忙,告诉我一下该怎么在窗体上直接打印文本,谢谢
怎么让Input函数直接在窗体上输入?
Print函数可以和Input函数一起使用么?怎么让Input函数直接在窗体上输入?
Jpress直接在tomcat启动运行
一、eclipse里新建maven项目 二、复制jpress官方文件下载的压缩包里jpress目录下的项目 三、粘贴到新建的maven项目里 四、选中项目右键Run As Maven Install 五、在eclipse工作空间的以上新建maven项目下jpress-web\target里会生成war包 六、将该war包粘贴到tomcat的we
C#中怎么直接在窗体输出文字?
在VB6.0中rn用print "abc"rn就可以在窗体上直接输出abcrnC#中怎么实现?
如何在直接在屏幕上直接显示字符串或者图片?
因为要在其他游戏全屏的情况下显示东西.所以不能用窗口透明..有没有方法能直接显示?在屏幕坐标不是窗口坐标上..rn优先于其他任何窗口 就像一些OEM系统那种按键盘上的音量键会在屏幕上显示音量条那种...
如何在C# WinForm上显示Gif动画?
在窗体上有一个加载事件(用于加载数据,但数据量可能比较大,耗时比较长。) rn因此我在执行查询时会实例会另外一个窗体frmWating(上面有一个Label,一个PictureBox, rnPictureBox的Image高为一个Gif文件) rnrn但是如果我启动事件的时候把frmWating 窗体show()出来的时候看不见GIF动画,请问如何处理。rnrn
C#如何在Tabpage上使用GDI绘图?
我想在Tabpage上使用GDI绘图,经查询,使用过下面两种方法:rnrn一、rnprivate void Form1_Load(object sender, EventArgs e)rn rn TabPage1.Paint += TabPage1_Paint;rn rn private void TabPage1_Paint(object sender, EventArgs e)rn rn Graphics graphics = this.CreateGraphics();rn Pen myPen = new Pen(Color.Red, 10);rn graphics.DrawLine(myPen, 0, 400, 1000, 400);rn rnrn二、rnprivate void Form1_Load(object sender, EventArgs e)rn rn TabPage1.Paint += TabPage1_Paint;rn rn protected override void OnPaint(PaintEventArgs e)//重写OnPaint方法rn rn base.OnPaint(e);//先执行基类的OnPaint方法rn Graphics graphics = e.Graphics;rn Pen mypen = new Pen(Color.Red, 10);rn graphics.DrawLine(mypen, 0, 400, 100, 400);rn rn rn 所得结果均会被遮挡,无法在tabpage上显示,请问正确的做法应是什么呢?rn 初学者,请大神们指教!
如何在窗体上画图
请问我在不使用Form1->Canvas的情况下如何在窗体上画图!?
如何在窗体上显示图片
要用什么方法把图片显示在窗体上呢!
如何在一个窗体上显示另一个窗体?
如何在一个有模式窗体A上显示另一个有模式窗体B,而且还可以控制B窗体在屏幕上显示的位置,还有在VB.NET中怎么表示有模式窗体?
MFC 如何在MDI窗体上显示一个FormView窗体
MFC 如何在MDI窗体上显示一个FormView窗体
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件