我需要检查一行中的所有像素,所以我使用Bresenham的算法来访问其中的每个像素.特别是我需要检查所有像素是否都位于位图的有效像素上.这是代码:
private void Bresenham(Point p1, Point p2, ref List<Point> track) {
int dx = p2.X - p1.X;
int dy = p2.Y - p1.Y;
int swaps = 0;
if (dy > dx) {
Swap(ref dx, ref dy);
swaps = 1;
}
int a = Math.Abs(dy);
int b = -Math.Abs(dx);
double d = 2*a + b;
int x = p1.X;
int y = p1.Y;
color_track = Color.Blue;
Check_Pixel(ref area, new Point(x,y));
track.Clear();
track.Add(new Point(x, y));
int s = 1;
int q = …Run Code Online (Sandbox Code Playgroud) 我需要一个动态长度的数据结构,能够更改元素值.元素的顺序并不重要.
如果我使用数组我可以修改我的元素,但我的长度有问题.解决方案是创建一个正确大小的新数组,并每次将所有元素复制到新数组中.不是一个好主意,因为元素的数量经常变化.
最好使用通用列表,但修改过程非常复杂:首先我需要删除我想要更改的元素 - 通用列表似乎没有简单的"删除"/"删除"方法,所以我尝试了"过滤器" - 然后将修改后的元素添加到头部.它有效,但对于这么简单的事情来说有点太复杂了.
是否有一个数据结构允许我动态更改长度并修改元素,如可修改列表或动态大小的数组?
<location>
<hotspot name="name1" X="444" Y="518" />
<hotspot name="name2" X="542" Y="452" />
<hotspot name="name3" X="356" Y="15" />
</location>
Run Code Online (Sandbox Code Playgroud)
我有一个点变量,我需要选择节点及其坐标,然后更改属性值。我想做类似的事情:
<location>
<hotspot name="name1" X="444" Y="518" />
<hotspot name="name2" X="542" Y="452" />
<hotspot name="name3" X="356" Y="15" />
</location>
Run Code Online (Sandbox Code Playgroud)
但通过变量获取属性值(变量名.X / 变量名.Y)。
我的想法是在一些颜色之间切换,所以我不必使用多个笔,但我只能声明一个.
我不太确定能够准确理解枚举是如何工作的,请纠正我:
type ColorType =
| Red = Color.Red
| Green = Color.Green
| Blue = Color.Blue
Run Code Online (Sandbox Code Playgroud)
我希望用它:
let p = new Pen(ColorType.[index])
g.DrawRectangle(p, 0, 0, 10, 10)
Run Code Online (Sandbox Code Playgroud)
其中index是一个int变量(0到2)我将用来切换我的颜色.问题是我无法声明枚举,不接受Color.可能的解决方案?