已回答 更改绘制图形的颜色

已加入
2020年5月25日
留言内容
8
地点
保加利亚索非亚
编程经验
Beginner
这是我的form1,您可以看到我的选项按钮:
Безиме.png


这是用于绘制形状:
C#:
private void drawBtn_Click(object sender, EventArgs e)
        {
            label1.Text = "Click somewhere to draw shape. The shape drawing when click with mouse.";
            option2Moving = false;
            option4ShowAreas = false;
            Form2 drawoptions = new Form2();
            drawoptions.ShowDialog();
        }

这是form2,用户在其中选择一种形式,然后输入其侧面:
Безиме1.png


当按下回车键-打开form1并在其中单击鼠标左键时,将显示形状。

我的问题是:如何更改绘制形状的颜色。我创造"change color"按钮,我想像了一下-通过按下按钮来更改颜色,这样的形状就会出现:

unnamed.gif


并选择其中一种颜色并更改该形状的颜色。我可能想要什么?有谁可以帮助我吗?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
作为 @约翰·H 建议,绘制GDI +图形后就不能对其进行任何更改,因为它不是对象。它只是表面上的像素。也就是说,GDI +的设计使控件可以重复重绘,因此在重绘控件时只需使用其他颜色即可。您需要将描述图形的数据存储在持久变量中,然后在每个变量上 事件,您将绘制这些变量描述的所有内容。如果您希望能够更改用户看到的颜色,则需要将该颜色与其余数据一起存储。在 事件,您创建一个 钢笔 和/或 刷子 根据该颜色进行绘制。

我倾向于建议您从一个 形状 包含所有形状的通用功能的类。这可能包括 颜色 财产 行宽 财产和摘要 具有类型参数的方法 图形。然后,您可以为每个单独的形状继承该类,并添加任何特定于形状的功能,包括覆盖 方法和使用 图形 提供的对象可以使用适当的线条以适当的颜色绘制适当的形状。然后,您将有一个类型的变量 列表<Shape> 并且,在 事件处理程序,您只需在该列表上循环并调用 每一个。如果要更改形状的颜色,只需设置 颜色 适当的财产 形状 对象然后调用 无效 在控件上绘制它们。
 
已加入
2020年5月25日
留言内容
8
地点
保加利亚索非亚
编程经验
Beginner
正如@JohnH所建议的那样,绘制GDI +图形后就无法对其进行任何更改,因为它不是对象。它只是表面上的像素。也就是说,GDI +的设计使控件可以重复重绘,因此在重绘控件时只需使用其他颜色即可。您需要将描述图形的数据存储在持久变量中,然后在每个变量上 事件,您将绘制这些变量描述的所有内容。如果您希望能够更改用户看到的颜色,则需要将该颜色与其余数据一起存储。在 事件,您创建一个 钢笔 和/或 刷子 根据该颜色进行绘制。

我倾向于建议您从一个 形状 包含所有形状的通用功能的类。这可能包括 颜色 财产 行宽 财产和摘要 具有类型参数的方法 图形。然后,您可以为每个单独的形状继承该类,并添加任何特定于形状的功能,包括覆盖 方法和使用 图形 提供的对象可以使用适当的线条以适当的颜色绘制适当的形状。然后,您将有一个类型的变量 列表<Shape> 并且,在 事件处理程序,您只需在该列表上循环并调用 每一个。如果要更改形状的颜色,只需设置 颜色 适当的财产 形状 对象然后调用 无效 在控件上绘制它们。


这是我的形状课,您可以看到我所拥有的:
C#:
abstract class Shapes
    {
        public int a { get; set; }
        public int b { get; set; }
        public int c { get; set; }

        public Point Location { get; set; }
        public Color color { get; set; }
        
        public string PenColor { get; set; }
        public string FillColor { get; set; }
        public int X1 { get; set; }
        public int Y1 { get; set; }
        public int X2 { get; set; }
        public int Y2 { get; set; }

        public abstract void Paint(Graphics graphics);
        public abstract bool ConteinsCordinate(Point point);

        public abstract double P();
        public abstract double S();
    }
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
您能告诉我该怎么做,因为我在互联网上到处搜索并且什么也没找到。
您已经获得了该对话文档的链接,因此无需搜索。当您已经在Microsoft Docs网站上时,也许也要查找Pen类型。您不必总是找到要复制和粘贴的福彩12选5走势图。如果您知道需要使用什么类型和/或成员,请务必阅读文档。了解他们可以做什么之后,您就可以自己做。
 
已加入
2020年5月25日
留言内容
8
地点
保加利亚索非亚
编程经验
Beginner
您已经获得了该对话文档的链接,因此无需搜索。当您已经在Microsoft Docs网站上时,也许也要查找Pen类型。您不必总是找到要复制和粘贴的福彩12选5走势图。如果您知道需要使用什么类型和/或成员,请务必阅读文档。了解他们可以做什么之后,您就可以自己做。

我很不高兴,但是不知道怎么写。我尝试了很多选择,但是没有用。现在我需要一些帮助。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
我尝试了很多选择,但是没有用。现在我需要一些帮助。
然后向我们展示您的最佳尝试,我们可以帮助您解决问题。当我们已经知道您已经完成99%的工作时,请不要要求我们从头开始做所有事情。
 
已加入
2020年5月25日
留言内容
8
地点
保加利亚索非亚
编程经验
Beginner
然后向我们展示您的最佳尝试,我们可以帮助您解决问题。当我们已经知道您已经完成99%的工作时,请不要要求我们从头开始做所有事情。

看,我尝试了,但我不能,只是寻求帮助,因为我是初学者。我不是要你为我做整个项目,我已经尽力了。我没有这个项目的任务,这只是我的一个想法,我想为我的项目做。很抱歉,我需要帮助时要求帮助。
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
来自从未忘记初学者的感觉的人。那是我读过的最失败主义的态度。没有这样的事情"I can't"。您正在限制自己以这种态度前进的能力。

与其看一眼,也不如自卑,请阅读提供的实际文档。然后将福彩12选5走势图复制并粘贴到您的程序中。研究它,并查找任何类型的成员,这些成员没有像已经建议的那样有意义 @jmcilhinney。一旦尝试并尝试自己编写此内容。

与我们分享您尝试过的福彩12选5走势图,您可能会惊讶于实际上可以从其他人那里得到多少帮助。我们希望看到用户在努力,但是如果您不愿意向我们展示您已经尝试过或尝试过的内容,那么我们将无济于事。

通过拒绝向我们显示您已更改或尝试更改的福彩12选5走势图,您也限制了我们为您提供帮助。 :)


 
已加入
2020年5月25日
留言内容
8
地点
保加利亚索非亚
编程经验
Beginner
来自从未忘记初学者的感觉的人。那是我读过的最失败主义的态度。没有这样的事情"I can't"。您正在限制自己以这种态度前进的能力。

与其看一眼,也不如自卑,请阅读提供的实际文档。然后将福彩12选5走势图复制并粘贴到您的程序中。研究它,并查找任何类型的成员,这些成员没有像已经建议的那样有意义 @jmcilhinney。一旦尝试并尝试自己编写此内容。

与我们分享您尝试过的福彩12选5走势图,您可能会惊讶于实际上可以从其他人那里得到多少帮助。我们希望看到用户在努力,但是如果您不愿意向我们展示您已经尝试过或尝试过的内容,那么我们将无济于事。

通过拒绝向我们显示您已更改或尝试更改的福彩12选5走势图,您也限制了我们为您提供帮助。 :)




实际上,我想从福彩12选5走势图中获得什么,我什至不知道是否可行。让我问你最后一件事...您想让我发送给您我的哪个福彩12选5走势图?该福彩12选5走势图中有100个错误,还是其中有200个错误?另外,我不知道如何发送已经删除的福彩12选5走势图。没关系,谢谢。 :)
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,542
地点
弗吉尼亚州切萨皮克
编程经验
10+
您想让我发送给您哪个福彩12选5走势图?该福彩12选5走势图中有100个错误,还是其中有200个错误?
任一种方法都可以帮助我们确定您要采用哪种方法来解决遇到的问题。
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,933
地点
英国
编程经验
10+
我不知道该如何回应最后的答复。

这里没有人拒绝帮助您。您拒绝通过不显示您尝试编写的福彩12选5走势图来让我们为您提供帮助。如果您这样做了,我们可以对其进行编辑,并为您遇到或犯的任何错误提供帮助。

如果您改变主意。您知道在哪里可以找到我们。 :凉爽的:
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
您想让我发送给您哪个福彩12选5走势图?该福彩12选5走势图中有100个错误,还是其中有200个错误?
正如我已经说过的,您应该向我们展示您的最佳尝试。根据您对问题的理解,以您认为最正确的为准。这不一定意味着编译错误最少,因为该福彩12选5走势图可能仍无法获得理想结果。考虑问题,确定解决方案应该是什么,编写福彩12选5走势图以实现该解决方案,然后向我们展示该福彩12选5走势图。这不是火箭手术。

另外,如果您的福彩12选5走势图中有那么多错误,那么您肯定会以完全错误的方式来处理问题,这就是问题的一部分。许多初学者将任何问题视为一个整体,并尝试一次性编写整个福彩12选5走势图。这是完全错误的。您需要将问题分解为越来越小的部分,并分别解决每个部分。因为每个部分都很小,所以更容易研究,更容易实现并且保证只有很少的错误。解决所有这些错误并且该部分正常工作后,请继续进行下一个操作。如果出现任何错误,您将知道它们在新零件中,而不是已经在工作的零件中,因此更容易解决。如果您这样做了,并寻求有关特定零件的特定问题的帮助,那么您将永远不会陷入200甚至100个错误的地步。
我不知道如何发送我已经没有的福彩12选5走势图,因为它已被删除。
如果您进行了备份或使用了源福彩12选5走势图管理,那么您仍将拥有福彩12选5走势图,但没有,则再次编写。

基本上,您现在只是在自怜。如前所述,没有人拒绝帮助您。如果是的话,我们早就停止了回复。我们之所以在这里是因为我们想提供帮助,但您却没有在帮助我们。帮助不仅仅是为您编写福彩12选5走势图。尝试和失败是学习的重要组成部分,从错误中学习也很重要。为此,如果我们看到您的福彩12选5走势图并指出您所犯的错误以及如何纠正它们,那么您将获得的知识远远超过仅复制并粘贴我们为您编写的福彩12选5走势图。我们希望您解决此问题,但除此之外,我们还希望您学习如何避免将来出现更多问题或能够自己解决问题。那就是我们正在努力实现的目标,但是您拒绝帮助我们。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,542
地点
弗吉尼亚州切萨皮克
编程经验
10+
我想知道我们是否遇到某种文化障碍。就像日本文化的一部分压力要保存面子而不显示弱点或失败一样,我想知道在我们的OP中是否是如此,她的学校或文化可能灌输了这样一种思想:寻求帮助时,仅显示到目前为止成功的步骤,但不显示尝试的错误步骤。

放在一边,但我觉得很重要。如果您打算长期待在编程行业中,那么,开发一个厚皮的人并能够将自己与福彩12选5走势图离婚将是必不可少的技能。人们可能对您的福彩12选5走势图发表的任何评论都不是关于您个人的评论。这仅仅是对福彩12选5走势图的看法或观点。我记得很多年前,我们聘请了一位出色的年轻人,他在Apple进行过两次实习,在IBM进行过一次实习。不幸的是,他的实习项目也是独立的原型项目,没有计划用于生产的项目。当我们为他正在研究的一项新功能对他的团队福彩12选5走势图进行第一次审查时,他离开会议室,在计划中的2小时会议中流泪了一个小时,回到家中。他的新聘导师必须回家,并解释说福彩12选5走势图审查中的任何内容都与他无关。仅仅是为了提高福彩12选5走势图质量以使其准备好交付而已。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,535
地点
悉尼,澳大利亚
编程经验
10+
@跳伞,公平点。我已经看到很多人的行为似乎是对编程的批评是一种人身攻击。"I'm a beginner"他们哭了,好像那应该以某种方式使他们免受批评。不,您是一个初学者,因此您编写了废话福彩12选5走势图,因此您需要受到批评,以便您知道自己在做错什么,以便可以做得更好。当我们还是初学者时,我们所有人都编写了废话福彩12选5走势图,我们也知道如何变得更好。让人们编写可以复制和粘贴的福彩12选5走势图更加容易,但是您可以从中学习到一些东西,但是通过批评自己的福彩12选5走势图可以学到更多东西,这样您就可以了解自己在做什么错,从而避免再次做类似的事情。学习不做什么与学习如何做以及复制其他人的福彩12选5走势图一样重要,只能教导他们。
 
最佳 底部