private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
pen= new Pen(Color.FromArgb(127, _colorvalue[0], _colorvalue[1], _colorvalue[2]), 1.0f);
//使用以下语句画点时
e.Graphics.DrawEllipse(pen, pp.X, pp.Y, 1.0f, 1.0f);//报参数无效
}
不知道为何?请高手明示!
注:PP为PointF类型,colorvalue数组为0-255的随机值
{
pen= new Pen(Color.FromArgb(127, _colorvalue[0], _colorvalue[1], _colorvalue[2]), 1.0f);
//使用以下语句画点时
e.Graphics.DrawEllipse(pen, pp.X, pp.Y, 1.0f, 1.0f);//报参数无效
}
不知道为何?请高手明示!
注:PP为PointF类型,colorvalue数组为0-255的随机值
解决方案 »
- c# 操作access错在那里?
- 关于解决linq并发冲突 的 ResolveAll 方法无效的问题
- 引用的问题
- 如何控制contextMenuStrip显示位置?
- 求C#2005中带参数的存储过程使用方法,急(最好有代码)
- datagrid 的双击事件
- 小问题:怎么把 datagrid 改动的数据更新的数据库中?..在线等..
- 关于C的递归调用?这里的递归是怎么运行的?这里的 hanoi(n-1,a,c,b);为什么表示把n-1个盘子从a借助c移到b
- 求一个C#正则表达式
- smtp.gmail.com服务是否禁止了
- 我就写几个字符,在winform中都必须用lable么》
- 在winform中引用flash播放控件后,放第二个flash时背景色会变成前一个?
就这一行好像是pen的参数无效。
pen= new Pen(Color.FromArgb(127, _colorvalue[0], _colorvalue[1], _colorvalue[2]), 1.0f);
加断点,单步,提示pen的参数也没什么问题啊,不知为何?
再检查一下pp点是不是在pictruebox1的矩形范围内
Random random = new Random();
pen= new Pen(Color.FromArgb(127, random.Next(255), random.Next(255), random.Next(255)), 1.0f);
改成这样应该没问题。
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Pen pen = new Pen(Color.FromArgb(127, 100,100, 100), 1.0f);
//使用以下语句画点时
Point pp = new Point(50,50);
e.Graphics.DrawEllipse(pen ,pp.X ,pp.Y ,20,30);
}
}
}
为什么你的不能执行呢?
可能原因有集中
1.pen对象是全局对象吗?
2.你的pp是在这个pictureBox中的吗?这个原因比较大,建议你换在这个Paint事件里来声明pp
3.你在给这个pen中的哪些颜色值是在范围0--255并且也是全局的吗?
看了你的代码,我修改哈我的代码,希望对你有帮组:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Point pp = new Point(50, 50);
Pen pen;
int[] color = new int[] { 100, 120, 130 };
public Form1()
{
InitializeComponent();
} private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
pen = new Pen(Color.FromArgb(127,color [0],color [1],color [2]), 1.0f);
//使用以下语句画点时
e.Graphics.DrawEllipse(pen ,pp.X ,pp.Y ,20,30);//此时这个PP是相对于PictureBox的值
}
}
}
也就是说下面这样就可以画出来,对吗?
pen=new pen(color.red,1);
e.Graphics.DrawEllipse(pen, pp.X, pp.Y, 1.0f, 1.0f);如果上面可以画出来,那就应该是你颜色参数分配有问题啊;
_colorvalue[0], _colorvalue[1], _colorvalue[2],问题应该就在你这三个参数里;
Pen pen = new Pen(this.BackColor, 10);
Point pp = new Point(rd.Next(255),rd.Next(255));
pen = new Pen(Color.FromArgb(127, _colorvalue[0], _colorvalue[1], _colorvalue[2]), 1.0f);
e.Graphics.DrawEllipse(pen, pp.X, pp.Y, 1.0f, 1.0f);这样的应该就好了~~
我是在picturebox的paint中画点,后该在一函数中使用
gc = Graphics.FromImage(picturebox1.Image)对象来画点的。
生成颜色函数:
private int[] GetColorValue(int[] colorvalue)
{
for (int i = 0; i < 3; i++)
{
colorvalue[i] = Rnd.Next(0, 255);//Rnd为random的实例对象
}
return colorvalue;
}
采用随机数生成的一个画笔的值如下:
base {System.MarshalByRefObject} = {Color = {Color [A=127, R=17, G=56, B=153]}}
pp的值如下://PointF pp = new PointF();
pp = {X = 11.5847111 Y = 387.09552}正如tianliang1所言这个代码在别的工程中可以正常运行,转移到新的工程中编译没有问题,运行调试时提示参数无效,郁闷中