underworld 1020,
I would suggest that you use a different implementation for your collision detection for barriers. Of course the method you use depends on the board image. Here is an example of an alternative(I would need to be able to see your board before offering other suggestions).
You could just display the board as an image or bitmap. Then create a 'logical grid'(A 2D array that breaks the bitmap into a grid). The size of the grid is dependent on how intricate your barriers are. I'll assume here that a 16*16 grid will sufffice (Of course if you needed to you could raise/lower it to 32*32 or 8*8). So following is a (poor) Pac-man'esque level. So the 'logical grid' for the board may look like this.
1=barrier 0=walkable: screen size 640*480
1111111111111111111111111111111111111111
1000000010000000100000000100000000000001
1011111010111110101111110101111101111101
1000000000000000000000000000000000000001
1111101111111101111101111110111111011111
1000001111111100011101110000111111000001
etc...
This would be stored in an array
dim level(39,29)
Now have variablse keep track of the player's x,y grid coordinates. And when they move, check the position in the array that corresponds to the grid they are moving to. If it's a 1, then it's a barier and so they can't move that way.
If this isn't accurate enough even with a smaller grid size. I would guess that if the barrier's outlines are a specific color, that's different then walkable areas, you could check for the pixel color. I haven't tested this method for speed in DBC though.