重寫Delphi FloodFill方法

2021-06-08 14:25:03 字數 674 閱讀 3414

因為如果是二元的圖形的時候,floodfill方法不能正確的填充到不規則的區域

procedure flood_fill_4(x, y:integer;old_color, fill_color:int64; vcanvas:tcanvas);

var vcurrentcolor:int64;

p : tpoint;

begin

p.x:=x;

p.y:=y;

vcurrentcolor:= vcanvas.pixels[p.x,p.y];

if (vcurrentcolor=old_color) and (vcurrentcolor<>fill_color) then

begin

vcanvas.pixels[x,y]:= fill_color;

flood_fill_4(x,y+1,old_color,fill_color,vcanvas);

flood_fill_4(x,y-1,old_color,fill_color,vcanvas);

flood_fill_4(x-1,y,old_color,fill_color,vcanvas);

flood_fill_4(x+1,y,old_color,fill_color,vcanvas);

endend;

IDEA 重寫equals重寫toString

重寫equals方法 idea中直接輸入eq回車進入重寫方法 第二步如果obj這個物件連學生 student 這個型別都不是,那麼肯定返回false if obj instanceof student 第三步如果是學生型別,強制把obj轉換成學生物件,不轉換預設是objeke student s s...

重寫equals為啥需要重寫hashCode

以前一直記得重寫equals要把hashcode也要重寫了,但是一直也是沒有搞明白,最近在看一些東西,覺得有必要記錄一下。equals是object類的方法,這個方法的作用是比較兩個物件是否相等的,可能有人會問了,使用 號不就可以比較了,為啥非得使用equals方法呢。假設你有乙個student類,...

重寫equals時還必須重寫hashCode方法

1.public boolean equals object obj 和 hashcode 方法是object物件中的方法 2.equals 與 hashcode間的關係是這樣的 a.如果兩個物件相同 即用equals比較返回true,那麼它們的 hashcode 值一定要相同 b.如果兩個物件的 ...