Quote: "Why edge sprite's lines disappear when the sprite is resized for below of 50% or they are increased when are resized above 50% from your original size?"
Well when you procedurally shrink a sprite, you cannot keep all the pixels because there are not enough across. You can't draw 100px across a 50px wide sprite. As your sprite's size decreases, more and more lines are going to be lost. By the time you reach 50%, 1 in 2 lines is going to have disappeared. As your borders are just 1px across, if their line of pixels is selected to be removed, they will appear to disappear. The same is true of increasing the size. The additional width has to be artificially generated, basically by duplicating lines of pixels. Thus you will see your borders double in width (to 2px) when it reaches 150%.
Now the thing is that you have the screen resolution set incredibly low.
set display mode 320,240,32
One way to get around this problem is to use a higher screen resolution and have borders that are more pixels across. That way, although lines will still be eliminated, you are unlikely to lose the entire border. The more pixels you can have, the nicer the scaling will look because you can have more levels of details. The borders will still change in size because they are part of the image and the entire image is being stretched but they will remain in closer proportion to the image.
Consider this example. You sill see that the lines will still disappear eventually but it can get smaller before they do than your example.
x=50
set display mode 800,600,32
create bitmap 1,800,600
cls rgb(100,200,50)
line 1,1,400,1
line 1,2,400,2
line 1,3,400,3
line 1,1,1,400
line 2,1,2,400
line 3,1,3,400
line 400,1,400,400
line 399,1,399,400
line 398,1,398,400
line 1,400,400,400
line 1,399,400,399
line 1,398,400,398
get image 3, 1, 1, 400, 400, 1
sprite 3,200,100,3
OriginalSize = sprite width(3)
delete bitmap 1
sync on
sync rate 80
do
set cursor 30, 20
print "Original Width Size: ", OriginalSize
if leftkey() and sprite width(3) > 30 then size sprite 3, sprite width(3) - 1, sprite height(3)
if rightkey() and sprite width(3) < 300 then size sprite 3, sprite width(3) + 1, sprite height(3)
set cursor 30, 60
print sprite width(3)
sync
loop
If what you want however is to have borders that are always the same width, regardless of scaling, you will need to have them as separate sprites so that they are not affected by altering the size of the main sprite.
Hope that helps.