Mr Inquisitive,
Unfortunately, there is no command which enables DarkBasic to detect collision only on the non-transparent parts of a sprite. It would take a bit of your math skills to create this type of collision yourselve, based on specific angles. Is your sprite image a circle, to where the collision needs to take place when something is accually within the area of the image of the circle?
About detection of a sprite only when it is shown, you would simply create a variable that turns 'on' and 'off' with the changing of the sprite from 'on' to 'off'. When you hide the sprite, just make sure that the variable is set to a specific number, so it can be referanced to as 'on', and when shown vice versa. Remember the word "Boolean", one of the greatest fundamentals in programming.
set display mode 800,600,32
sync on
sync rate 60
REM << make sprite
ink rgb(150,210,70),0
box 0,0,50,25
get image 1,0,0,50,25
cls
sprite 1,(800 - 50) / 2,(600 - 25) / 2,1
REM <<<<<<< main program loop >>>>>>>
repeat
REM << show and hide sprite via user input
if upkey() = 1 and spritevis = 0
show sprite 1
spritevis = 1
endif
if downkey() = 1 and spritevis = 1
hide sprite 1
spritevis = 0
endif
REM << print variable to screen
ink rgb(150,150,0),0
if spritevis = 1
text 0,0,"You can see the sprite image"
else
text 0,0,"You cannot see the sprite image"
endif
text 0,15,"spritevis = " + str$(spritevis)
REM << display controls on screen
ink rgb(150,0,0),0
center text 400,565,"press up and down arrow keys to show and hide sprite"
center text 400,580,"press a mouse button to end program"
sync
cls
until mouseclick() > 0
end

+NanoBrain+