C#中将面板颜色赋给画笔色拜托了各位 谢谢

C#中将面板颜色赋给画笔色拜托了各位 谢谢,第1张

public void CreateNewPen()//制作随机色,并将颜色赋值给panel1 { int r, g, b; Random ran = new Random(); r = ranNext(0, 255); g = ranNext(0, 255); b = ranNext(0, 225); Color clr = ColorFromArgb(r, g, b); panel1BackColor = clr; //这里应该可以加一句将panel1BackColor或clr 给画笔颜色····问题在于不知道怎么做 Pen myPen=new Pen(); myPenColor=clr; } Graphics g = richTextBox1CreateGraphics(); // gDrawEllipse (Pens Blue,richTextBox1 ClientRectangle ); //我想把这句里面的pensBlue改成panel1BackColor颜色 Pen pen=new Pen(); penColor=panelBackColor; gDrawEllipse (pen,richTextBox1 ClientRectangle ); gDispose(); //by:梦酹天涯

public class CircleTest {
public static void main(String[] args) {
Circle circle=new Circle(5);//构造一个半径为5的圆形对象
circlesetColor("红色");//对象调用设置颜色方法,将颜色设置为红色
circleprintString();//对象调用自定义的打印方法
Systemoutprintln("输出面积:"+circlegetArea());//对象调用计算面积方法并打印返回值
Systemoutprintln("输出周长:"+circlegetLength());//对象调用计算周长方法并打印返回值
Systemoutprintln("输出颜色:"+circlegetColor());//对象调用获取颜色方法并打印返回值
}
}
abstract class Shape{//图形抽象类
public abstract double getArea();//计算形状面积的抽象方法
public abstract double getLength();//计算形状周长的抽象方法
}
interface Color{//颜色接口
public abstract void setColor(String clr);//设置颜色的抽象带参方法
public abstract String getColor();//获取颜色的抽象方法
}
class Circle extends Shape implements Color{//圆形类继承图形类,实现颜色接口
private double dRadius;//属性-半径
private String color;//属性-颜色
public Circle(double dRadius) {//带参构造方法
thisdRadius=dRadius;//利用接收的参数初始化属性-半径
}
public void setColor(String clr) {//实现接口的设置颜色方法
color=clr;//利用接收的参数设置属性-颜色
}
public String getColor() {//实现接口的获取颜色的方法
return color;//返回属性-颜色
}
public double getArea() {//实现图形类的计算面积方法
double area=MathPI(dRadiusdRadius);//计算面积并赋值给变量area
return area;//返回area
}
public double getLength() {//实现图形类的计算周长方法
double length=2MathPIdRadius;//计算周长并赋值给变量lengh
return length;//返回周长
}
public void printString() {//自定义的打印方法
Systemoutprintln("我是圆形!我的半径是:"+dRadius);//打印信息和半径
}
}

添加一个模块,在其中声明一个 Public 变量存放颜色值,然后在每个窗口的Shape控件定义FillColor属性的时候都使用这个变量所定义的颜色值。
例如在模块中:
Public clr
在启动首窗体中:(也就是程序打开的第一个窗体)
Private Sub Form_Load()
clr = vbRed
Shape1FillColor = clr
End Sub
在其它中:
Private Sub Form_Load()
Shape1FillColor = clr
End Sub
你也可以随时改变颜色值:
Private Sub Command1_Click()
clr=vbBlue
End Sub

给出一个图的m-着色的程序段,回溯法:
/ 图的邻接矩阵Graph[n,n]表示无向连通图G,
1,2,3,m代表不同的颜色
顶点i所着色用x[i]表示,初始值都赋为0
/
void NextValue(int k)
{
int j, flag;
do{
x[k] = (x[k]+1) % (m + 1)//分配给x[k]一种新的颜色
if (x[k] == 0)
return; //x[k]的颜色已用完
flag = 1; //x[k]是否可用的标记
for (j = 0; j < n; j++)
if (Graph[k,j] == 1 && x[k] == x[j]){
flag = 0; //x[k]不可用
break;
}
while (flag);
}
void MColoring(int k)
{
while (x[k] < m){ //产生x[k]的合理分配
NextValue(k); //找x[k]的一个合理分配
if (x[k] == 0)
return; //无解,结束调用
if (k == n) { //着完n个顶点,找到完整着色法,输出
Output(x,k) //输出当前解
else
MColoring(k+1)
}
}
/
递归算法:
void Coloring(区域 n)
1 令颜色集ClrSet={ 没有被区域n的邻居区域使用的颜色 }
2 如果ClrSet是空集,返回
3 对ClrSet中的每种颜色c,作循环:
31 为区域n着色c。
32 如果所有区域都已着色(n是最后一个区域),那么显示/保存着色结果
33 否则对下一个尚未着色的区域(n+1),调用Coloring(n+1)
4 把区域n变为没有着色的区域
--------------------------------------------------------
/
template<int node_count = 8>
class CColoring
{
private:
typedef int node_type;
typedef int color_type;
typedef std::set<node_type> node_set;
typedef std::vector<color_type> color_array;
public:
void operator()(const int _Matrix[node_count][node_count])
{
matrix = _Matrix;
colors_of_nodesresize(node_count, 0);
total_count = 0;
coloring(0);
}
private:
void coloring(node_type n)
{
// 颜色的使用情况
std::vector<bool> used_colors;
node_type m;
color_type c;
// 初始化颜色的使用情况
used_colorsresize(color_count, false);
// 遍历每个与区域n相邻的区域m
for(m = 0; m < node_count; ++m)
{
if(matrix[n][m])
{
// 获取m的颜色
c = colors_of_nodes[m];
// m已着色
if(c != 0)
used_colors[c] = true;
}
}
// 遍历每个未被n的邻居使用的颜色c
for(c = 1; c < color_count; ++c)
{
if(!used_colors[c])
{
// 为n着色c
colors_of_nodes[n] = c;
// 着色完毕
if(n >= node_count - 1)
{
++total_count;
// 输出结果
_tprintf(_T("---------------------\n"));
_tprintf(_T("Method %d:\n"), total_count);
for(m = 0; m < node_count; ++m)
{
_tprintf(_T("node: %d, color: %d\n"), m, colors_of_nodes[m]);
}
}
// 还有区域没有着色
else
{
// 为下一个未着色的区域,调用coloring()
coloring(n + 1);
}
}
}
// 将n设置为没有着色的区域
colors_of_nodes[n] = 0;
}
// 0表示无色,1-4表示4种不同颜色
static const int color_count = 5;
// 邻接矩阵
const int ( matrix)[node_count];
// 各区域对应的颜色
color_array colors_of_nodes;
// 总的着色方案数
int total_count;
};
void main()
{
int Matrix[4][4] =
{
{ 0, 1, 0, 0 },
{ 1, 0, 0, 0 },
{ 0, 0, 0, 1 },
{ 0, 0, 1, 0 },
};
CColoring<4> coloring;
coloring(Matrix);
}

//区域左上角X座标
X1=0
//区域右下角X座标
X2=1023
//区域左上角Y座标
Y1=0
//区域右下角Y座标
Y2=767
//要找的颜色(十六进位字符串)
Clr="FFFFFF"
//X,Y就是位置座标
VBSCall
FindColor(X1,Y1,X2,Y2,Clr,X,Y)
//如果找到了
If
x>0
//点击

LeftClick
1

//如果回圈的话需要加上这句

x=0
EndIf


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13378228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存