回答 改变绘制的数字的颜色

加入
5月25日,2020年
消息
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


按ENTER - 打开FORM1和鼠标左键的位置,它显示出形状。

我的问题是:如何改变绘制形状的颜色。我创造"change color"按钮和我想象它 - 按按钮来更改颜色和形状,将出现:

未命名


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

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
作为 @Johnh. 建议,一旦它被绘制,你就无法改变GDI +绘图的任何东西,因为它不是一个对象;它只是表面上的像素。也就是说,GDI +设计成使得控制器重新绘制,因此您只需在重绘时使用不同的颜色。您需要存储在持久变量中描述绘图的数据,然后在每个数据 事件,您可以绘制任何变量描述的变量。如果您希望能够更改用户看到的颜色,则需要使用其余数据存储该颜色。在A. 事件,你创建一个 钢笔 和/或 刷子 基于该颜色并与之绘制。

我倾向于建议的是你从一个开始 形状 类包含所有形状的常用功能。这可能包括一个 颜色 物业,A 行宽 财产和抽象 具有类型参数的方法 图形。然后,您可以为每个单独的形状继承该类并添加任何特定形状的功能,包括覆盖 方法和使用 图形 提供的对象以用适当的线在适当的颜色中绘制相应的形状。然后,您将有一个类型的类型 列表<Shape> 而且,在 事件处理程序,您可以简单地循环该列表并致电 每个人。如果要更改形状的颜色,则简单地设置 颜色 适当的财产 形状 对象然后致电 无效 在控制上,您正在绘制它们。
 
加入
5月25日,2020年
消息
8
地点
索非亚,保加利亚
编程经验
Beginner
正如@Johnh所建议的那样,您无法在GDI +绘图中更改任何内容,因为它是不是一个对象;它只是表面上的像素。也就是说,GDI +设计成使得控制器重新绘制,因此您只需在重绘时使用不同的颜色。您需要存储在持久变量中描述绘图的数据,然后在每个数据 事件,您可以绘制任何变量描述的变量。如果您希望能够更改用户看到的颜色,则需要使用其余数据存储该颜色。在A. 事件,你创建一个 钢笔 和/或 刷子 基于该颜色并与之绘制。

我倾向于建议的是你从一个开始 形状 类包含所有形状的常用功能。这可能包括一个 颜色 物业,A 行宽 财产和抽象 具有类型参数的方法 图形。然后,您可以为每个单独的形状继承该类并添加任何特定形状的功能,包括覆盖 方法和使用 图形 提供的对象以用适当的线在适当的颜色中绘制相应的形状。然后,您将有一个类型的类型 列表<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日
消息
1,159
地点
挪威
编程经验
10+
你没有看到该页面中的代码示例吗?
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
你能告诉我如何做到这一点,因为我在互联网上的各地搜索,找不到任何东西..
您已被提供给对话的文档链接,因此不需要搜索。虽然您已经在Microsoft Docs网站上,但也可以查找笔式。您并不总是必须找到复制和粘贴的代码。如果您知道所需的类型和/或成员,请始终读取文档。一旦你了解他们能做什么,你就可以自己做。
 
加入
5月25日,2020年
消息
8
地点
索非亚,保加利亚
编程经验
Beginner
您已被提供给对话的文档链接,因此不需要搜索。虽然您已经在Microsoft Docs网站上,但也可以查找笔式。您并不总是必须找到复制和粘贴的代码。如果您知道所需的类型和/或成员,请始终读取文档。一旦你了解他们能做什么,你就可以自己做。

我Udnerstant,但不知道如何写作。我尝试这么多选择,但它不起作用。现在我需要一些帮助..
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
我尝试这么多选择,但它不起作用。现在我需要一些帮助..
然后向我们展示您最好的尝试,我们可以帮助您解决它。当我们所知道的,当我们所知道的时,不要让我们从头开始做所有事情,你已经在那里的99%。
 
加入
5月25日,2020年
消息
8
地点
索非亚,保加利亚
编程经验
Beginner
然后向我们展示您最好的尝试,我们可以帮助您解决它。当我们所知道的,当我们所知道的时,不要让我们从头开始做所有事情,你已经在那里的99%。

看,我尝试了,我不能,只是要求帮助,因为我是一个初学者。我不是要求你为我做整个项目,我已经完成了我能做的。我没有这项项目的任务,它是一个想法,我想为我的项目做到这一点。对不起,我在需要时请求帮助。
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
向我们展示一些失败的尝试。
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
看,我试过,我不能,
来自一个永远不会忘记它是初学者的人。这是我读过的最聪明的人的态度。没有这样的东西"I can't"。您正在抑制自己的能力,以这种态度向前发展。

而不是瞥见它并感觉劣等,阅读您提供的实际文档。然后将代码复制并粘贴到您的程序中。研究它,并查找任何类型的成员,没有意义上已经提出 @jmcilkinney.。一旦你尝试自己尝试写信服。

与我们分享您尝试的代码,您可能会惊讶于您实际上可能从其他人返回多少帮助。我们喜欢看到用户努力,但如果你不愿意向我们展示你尝试或尝试的东西,那么我们就可以做些什么来帮助你。

通过拒绝向我们展示您更改或尝试更改的代码,您也限制了我们帮助您。 :)


 
加入
5月25日,2020年
消息
8
地点
索非亚,保加利亚
编程经验
Beginner
来自一个永远不会忘记它是初学者的人。这是我读过的最聪明的人的态度。没有这样的东西"I can't"。您正在抑制自己的能力,以这种态度向前发展。

而不是瞥见它并感觉劣等,阅读您提供的实际文档。然后将代码复制并粘贴到您的程序中。研究它,并查找任何类型的成员,没有意义上已经提出 @jmcilkinney.。一旦你尝试自己尝试写信服。

与我们分享您尝试的代码,您可能会惊讶于您实际上可能从其他人返回多少帮助。我们喜欢看到用户努力,但如果你不愿意向我们展示你尝试或尝试的东西,那么我们就可以做些什么来帮助你。

通过拒绝向我们展示您更改或尝试更改的代码,您也限制了我们帮助您。 :)




事实上,我想用我的代码来获得什么,我甚至不知道它是否可能。让我问你最后一件事......我想让我寄给你哪个代码? ТHE代码有100个或者有200个错误的码?另外,我不知道如何发送代码,因为它已删除。没关系,谢谢。 :)
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
我想让我寄给你哪个代码? ТHE代码有100个或者有200个错误的码?
任何一个人都会帮助我们试图弄清楚你正在尝试解决你遇到的问题的方法。
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
我不知道如何回应最后的回复。

这里没有人拒绝帮助你。您拒绝让我们通过不显示您尝试编写的代码来帮助您帮助您。如果你这样做了,我们就可以编辑它并帮助您遇到或制作任何错误。

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

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
我想让我寄给你哪个代码? ТHE代码有100个或者有200个错误的码?
正如我已经说过的那样,你应该向我们展示你最好的尝试。基于您对问题的理解,无论您认为最正确。这并不一定意味着具有最少的编译错误的人,因为该代码可能仍然没有在所需结果附近的任何位置。想想问题,确定你认为解决方案应该是什么,写代码来实现该解决方案,然后向我们展示该代码。它不是火箭手术。

此外,如果您有多个错误的代码,那么您几乎保证以错误的方式完全接近事物,这是问题的一部分。许多初学者将任何问题视为巨石,并尝试一次性编写整个代码。这是错误的错。您需要将问题分解为更小和较小的部分并单独地解决每个部分。因为每个部分都很小,所以研究更容易实现并保证只有少量错误。一旦您解决了所有这些错误并且该部件正在运行,您将继续下一个。如果出现任何错误,您知道它们在新的部分而不是上工作部件,因此它们更容易解决。如果您已经完成了并要求提供特定部分的特定问题,那么您永远不会达到200甚至100个错误。
我不知道如何发送我没有的代码,因为它删除了。
如果您备份或使用源控制,那么您仍然有代码,但是,就像你没有,再次写它。

基本上,你现在只是沉溺于自怜。据说,没有人拒绝帮助你。如果我们被当时,我们很久以前就停止了回复。我们在这里,因为我们想帮助,但你并没有帮助我们这样做。帮助不仅仅是为您编写代码。尝试和失败是学习的重要组成部分,您也重要的是您从错误中吸取教训。为此,如果我们看到您的代码并指出您所做的错误以及如何修复它们,您将远远超过我们只需复制和粘贴我们为您写的代码。我们希望您解决这个问题,但我们想要您学习如何避免将来的更多问题或能够为自己解决这些问题。这就是我们努力实现的,但你拒绝帮助我们。
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
我想知道我们是否正在达到某种文化障碍。就像日本文化的一部分都有压力拯救面部,而不是表现出弱点或失败,我想知道在我们的op的情况下也是如此,她的学校或文化可能已经灌输了思想,在寻求帮助时,迄今为止只出现成功的步骤,但不显示尝试的错误。

这是一边,但我感受到相关。如果您打算留在长期的编程行业:开发厚厚的皮肤并能够从您的代码中离婚,这将是重要技能。人们可能会对您的代码作出任何评论,这不是一个关于您的评论。这只是关于代码的意见或观点。我多年前回想起,我们聘请了一个聪明的年轻人,他们在苹果和一个在IBM做了2个实习。不幸的是,他的实习项目也是独立的原型项目,没有计划生产使用。当我们对新功能进行的第一个团队代码审查时,我们让他努力工作,他离开会议室,并在我们计划的2小时内完成了大约一个小时的泪水。他的新雇佣导师不得不去他家,解释规范中的任何内容都意味着对他来说。它只是尝试提高代码的质量,以便准备发货。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,720
地点
悉尼,澳大利亚
编程经验
10+
@skydiver.,公平的积分。我看到很多人都行动,好像对他们的编程批评是个人攻击。"I'm a beginner"他们哭了,好像应该以某种方式保护他们免受批评。不,你是一个初学者,所以你写废话代码,所以你需要受到批评,所以你知道你做错了什么,所以你可以变得更好。当我们是初学者时,我们都写了垃圾代码,我们也知道变得更好的东西。让人们写作你可以复制和粘贴的代码更容易,但是你可以从中学习一些东西,但你可以通过拥有自己的代码批评来学习更多的东西,以便你能理解你做错了什么,所以你可以避免再次做类似的事情。学习什么不做的就是与学习该做什么和复制其他人的代码一样重要,只能迄今为止教学。
 
最佳 底部