Graphics in Freebasic
Graphics in Freebasic
Hi all,
How do I handle graphics in Freebasic?
Basiclly I want to know say I have a screen with lots if information
being displayed and I then display a Error box how do I restore the
screen information that was below the error box?
Thanks
Andy
How do I handle graphics in Freebasic?
Basiclly I want to know say I have a screen with lots if information
being displayed and I then display a Error box how do I restore the
screen information that was below the error box?
Thanks
Andy
-
- Posts: 5494
- Joined: Sep 12, 2005 20:06
- Location: California
There's plenty of ways to render graphics...
Cross-Platform GUI: FB gfxlib2, GTK+, Qt, OpenGL, wxWidgets
Windows: DirectX, Windows API
Are you already familiar with any tools, and what OS are you developing on/for?
I'm not completely sure what you want. Do you want a "pop-up window" like you get with Windows error messages? example
Cross-Platform GUI: FB gfxlib2, GTK+, Qt, OpenGL, wxWidgets
Windows: DirectX, Windows API
Are you already familiar with any tools, and what OS are you developing on/for?
I'm not completely sure what you want. Do you want a "pop-up window" like you get with Windows error messages? example
OK
Example time :) Display 1 is what is normally displayed when ever any items are scanned (
When a item is scanned that is age limited the Till will show Display 2
the cashier would say YES to the age request and they would then see image 3
The Targerted OS will be
> DOS (first off)
> Windows
> Linux
Hope that helps
Example time :) Display 1 is what is normally displayed when ever any items are scanned (
When a item is scanned that is age limited the Till will show Display 2
the cashier would say YES to the age request and they would then see image 3
The Targerted OS will be
> DOS (first off)
> Windows
> Linux
Hope that helps
Would your GUI require the use of a mouse and actual clickable windows? If not, what you can do is combine a freetype wrapper/DLL (there's one for Freebasic somewhere here in forums) with static pictures and FBGFX primitives (line, circle, etc.).
Last edited by agamemnus on May 05, 2010 23:25, edited 1 time in total.
No this version would not need the mouse as it is all keyboard based (as it is a EPoS Till system)
but I will be doing a touch screen version of my EPoS Software (at some point)
If I wanted to display messages like Windows (the question mark etc) I would asume I would have to draw them manually (by code)?
but I will be doing a touch screen version of my EPoS Software (at some point)
If I wanted to display messages like Windows (the question mark etc) I would asume I would have to draw them manually (by code)?
That not a problem but I am worried about the blocky text I have for the total etc at the top of the screen.
I have looked at at that XFont but I can not seem to figure out how to make the font larger and keep it smooth (in the vb version the total label is Arial Narrow and the font size is 28) how would i do that with the XFont?
Andy
I have looked at at that XFont but I can not seem to figure out how to make the font larger and keep it smooth (in the vb version the total label is Arial Narrow and the font size is 28) how would i do that with the XFont?
Andy
Er, I was not using xfont. I was using this:
http://www.freebasic.net/forum/viewtopi ... t=freetype
I did make a lot of changes but I can't find the code ..
Atm I'm just using a gui that works with 3d graphics settings...
http://www.freebasic.net/forum/viewtopi ... t=freetype
I did make a lot of changes but I can't find the code ..
Atm I'm just using a gui that works with 3d graphics settings...
Re: Graphics in Freebasic
HiGablea wrote:Hi all,
How do I handle graphics in Freebasic?
Thanks
Andy
This is the closest I can manage with just FreeBASIC.
Ive posted this font thing before under tips and tricks, with instructions, but it's only a bit of fun, not meant for till readouts or whatever.
Code: Select all
declare sub paintstring(x as double,_
y as double,_
s as string,_
size as double,_
c as uinteger,_
line_angle as double=0,_
char_angle as double=0,_
thickness_tweak as double=1,_
image as any pointer=0)
'****************** MAIN *********************
screenres 650,650,32
dim as uinteger black=rgb(0,0,0),white=rgb(254,254,254)
paint(0,0),white
line(0,0)-(650,500),black,B
line(0,505)-(650,600),black,B
line(0,605)-(650,650),rgb(0,0,250),BF 'base
line(0,0)-(270,50),black,B:line(380,0)-(650,50),black,B
paintstring(5,0,"Sub Total",.4,black)
paintstring(150,5,"£9.99",.8,black)
paintstring(385,0,"Items Sold",.4,black)
paintstring(630,5,"1",.8,black)
paintstring(2,470,"DVD 01675",.8,black)
paintstring(480,470,"£9.99A",.8,black)
paintstring(10,520,"SCAN/KEY",.7,black)
paintstring(10,560,"NEXT ITEM",.7,black)
paintstring(10,615,"001 01/05/2010 12:46 123456 1105 SAMPLE CASHIER",.4,white)
sleep
'**************** END ********************************
'START OF PAINTSTRING ******************************************
Dim Shared np(1 To 4) As Double
Sub rotate(Byval pivot_x As Double,_ 'turns about this point
Byval pivot_y As Double,_
Byval first_x As Double,_ 'centre for circles
Byval first_y As Double,_
Byval second_x As Double, _ 'radius for circles
Byval second_y As Double, _ 'aspect
byval arc_1 as double,_ 'arcs only for circle, 0 for lines
byval arc_2 as double,_
Byval angle As Double, _ 'all below for circles and lines
Byval magnifier As Double,_
Byval dilator as double,_
Byval colour As Integer,_
byval thickness as double,_
Byref shape As String,_
image as any pointer=0)
'rotated line is (np(1),np(2))-(np(3),np(4))
'rotated circle centre is np(3),np(4)
'shape:
'line - draws the line
'linepoint - does the calculation, draws nothing
'linepointset - does the calculations, sets a pixel at the line ends
'ALSO circle,circlepoint, circlepointset,box, boxfill, circlefill.
'arcs from horizontal positive x axis in DEGREES
'arc1<arc2 always e.g from 330 to 430
shape=lcase$(shape)
Dim p As Double = 4*Atn(1) '(pi)
Dim radians As Double
Dim line_xvector As Double
Dim line_yvector As Double
Dim pivot_xvector As Double
Dim pivot_yvector As Double
Dim th As Double
th=thickness
Dim sx As Double=second_x
angle=angle mod 360
radians=(2*p/360)*angle 'change from degrees to radians
#Macro thickline(t)
Dim As Double s,h,c
Dim As Uinteger prime=rgb(255,255,255)
h=Sqr(((np(1))-(np(3)))^2+((np(2))-(np(4)))^2)
s=((np(4))-np(2))/h
c=(np(1)-(np(3)))/h
line image, (np(3)+s*t/2,np(4)+c*t/2)-(np(1)+s*t/2,np(2)+c*t/2),prime
line image, (np(3)-s*t/2,np(4)-c*t/2)-(np(1)-s*t/2,np(2)-c*t/2),prime
line image, (np(3)+s*t/2,np(4)+c*t/2)-(np(3)-s*t/2,np(4)-c*t/2),prime
line image, (np(1)+s*t/2,np(2)+c*t/2)-(np(1)-s*t/2,np(2)-c*t/2),prime
paint image,((np(3)+np(1))/2, (np(4)+np(2))/2),prime,prime
line image, (np(3)+s*t/2,np(4)+c*t/2)-(np(1)+s*t/2,np(2)+c*t/2),colour
line image, (np(3)-s*t/2,np(4)-c*t/2)-(np(1)-s*t/2,np(2)-c*t/2),colour
line image, (np(3)+s*t/2,np(4)+c*t/2)-(np(3)-s*t/2,np(4)-c*t/2),colour
line image, (np(1)+s*t/2,np(2)+c*t/2)-(np(1)-s*t/2,np(2)-c*t/2),colour
paint image,((np(3)+np(1))/2, (np(4)+np(2))/2), colour, colour
#EndMacro
#macro thickcircle(t)
Dim As Uinteger prime=rgb(255,255,255)
dim as double xp1,xp2,yp1,yp2
dim arc1 as double=arc_1*p/180
dim arc2 as double=arc_2*p/180
arc1=2*p+(arc1-(radians))
arc2=2*p+(arc2-(radians))
sx=sx*magnifier
if arc1=arc2 then
circle image,(np(3),np(4)),sx+t/2,prime,,,second_y
circle image,(np(3),np(4)),sx-t/2,prime,,,second_y
paint image,(np(3),np(4)+sx),prime,prime
paint image,(np(3)+sx,np(4)),prime,prime
circle image,(np(3),np(4)),sx+t/2,colour,,,second_y
circle image,(np(3),np(4)),sx-t/2,colour,,,second_y
paint image,(np(3),np(4)+sx),colour,colour
paint image,(np(3)+sx,np(4)),colour,colour
end if
if arc1<>arc2 then
xp1=np(3)+(sx)*cos(.5*(arc2+arc1))
yp1=np(4)-(sx)*sin(.5*(arc2+arc1))
circle image,(np(3),np(4)),sx+t/2,prime,arc1,arc2,second_y
circle image,(np(3),np(4)),sx-t/2,prime,arc1,arc2,second_y
line image,(np(3)+(sx+t/2)*cos(arc1),np(4)-(sx+t/2)*sin(arc1))-(np(3)+(sx-t/2)*cos(arc1),np(4)-(sx-t/2)*sin(arc1)),prime
line image,(np(3)+(sx+t/2)*cos(arc2),np(4)-(sx+t/2)*sin(arc2))-(np(3)+(sx-t/2)*cos(arc2),np(4)-(sx-t/2)*sin(arc2)),prime
paint image,(xp1,yp1),prime,prime
circle image,(np(3),np(4)),sx+t/2,colour,arc1,arc2,second_y
circle image,(np(3),np(4)),sx-t/2,colour,arc1,arc2,second_y
line image,(np(3)+(sx+t/2)*cos(arc1),np(4)-(sx+t/2)*sin(arc1))-(np(3)+(sx-t/2)*cos(arc1),np(4)-(sx-t/2)*sin(arc1)),colour
line image,(np(3)+(sx+t/2)*cos(arc2),np(4)-(sx+t/2)*sin(arc2))-(np(3)+(sx-t/2)*cos(arc2),np(4)-(sx-t/2)*sin(arc2)),colour
paint image,(xp1,yp1),colour,colour
end if
#endmacro
magnifier=dilator*magnifier
pivot_xvector=first_x-pivot_x
pivot_yvector=first_y-pivot_y
pivot_xvector=dilator*pivot_xvector
pivot_yvector=dilator*pivot_yvector
Dim mover(1 To 2,1 To 2) As Double
Dim new_pos(1 To 2) As Double
mover(1,1)=Cos(radians)
mover(2,2)=Cos(radians)
mover(1,2)=-Sin(radians)
mover(2,1)=Sin(radians)
line_xvector=magnifier*(second_x-first_x) 'get the vector
line_yvector=magnifier*(second_y-first_y) 'get the vector
new_pos(1)=mover(1,1)*pivot_xvector+mover(1,2)*pivot_yvector +pivot_x
new_pos(2)=mover(2,1)*pivot_xvector+mover(2,2)*pivot_yvector +pivot_y
Dim new_one(1 To 2) As Double 'To hold the turned value
new_one(1)=mover(1,1)*line_xvector+mover(1,2)*line_yvector +first_x
new_one(2)=mover(2,1)*line_xvector+mover(2,2)*line_yvector +first_y
Dim xx As Double 'translation
Dim yy As Double
xx=first_x-new_pos(1)
yy=first_y-new_pos(2)
np(1)=new_one(1)-xx
np(2)=new_one(2)-yy
np(3)=first_x-xx
np(4)=first_y-yy
Select Case shape
Case "line"
If th<2 Then
line image,(np(3),np(4))-(np(1),np(2)),colour
Else
thickline(th)
End If
Case "circle"
dim arc1 as double=arc_1*p/180
dim arc2 as double=arc_2*p/180
if arc1=arc2 then
If th<=3 Then
for n as double=magnifier*sx-1 to magnifier*sx+1 step .5
circle image,(np(3),np(4)),n,colour,,,second_y
'circle image,(np(3),np(4)),magnifier*sx,colour,,,second_y
next n
Else
thickcircle(th)
End If
endif
if arc1<>arc2 then
If th<=3 Then
arc1=2*p+(arc1-(radians))'new
arc2=2*p+(arc2-(radians))'new
for n as double=magnifier*sx-1 to magnifier*sx+1 step .5
circle image,(np(3),np(4)),n,colour,arc1,arc2,second_y
' circle image,(np(3),np(4)),magnifier*sx,colour,arc1,arc2,second_y
next n
else
thickcircle(th)
end if
end if
Case "circlefill"
dim as double xp1,xp2,yp1,yp2
Dim As Uinteger prime=rgb(255,255,255)
dim arc1 as double=arc_1*p/180
dim arc2 as double=arc_2*p/180
if arc1=arc2 then circle image,(np(3),np(4)),magnifier*sx,colour,,,second_y,F
if arc1<>arc2 then
xp1=np(3)+magnifier*sx*cos(.5*(arc2+arc1))*3/4
yp1=np(4)-magnifier*sx*sin(.5*(arc2+arc1))*3/4
circle image,(np(3),np(4)),magnifier*sx,prime,arc1,arc2,second_y
line image,(np(3),np(4))-(np(3)+magnifier*sx*cos(arc2),np(4)-magnifier*sx*sin(arc2)),prime
line image,(np(3),np(4))-(np(3)+magnifier*sx*cos(arc1),np(4)-magnifier*sx*sin(arc1)),prime
paint image,(xp1,yp1),prime,prime
circle image,(np(3),np(4)),magnifier*sx,colour,arc1,arc2,second_y
line image,(np(3),np(4))-(np(3)+magnifier*sx*cos(arc2),np(4)-magnifier*sx*sin(arc2)),colour
line image,(np(3),np(4))-(np(3)+magnifier*sx*cos(arc1),np(4)-magnifier*sx*sin(arc1)),colour
paint image,(xp1,yp1),colour,colour
end if
Case"box"
line image,(np(3),np(4))-(np(1),np(2)),colour,b
Case "boxfill"
line image,(np(3),np(4))-(np(1),np(2)),colour,bf
Case "linepoint","circlepoint"
'nothing drawn
Case "linepointset","circlepointset"
If shape="linepointset" Then
Pset image,(np(1),np(2)),colour
Pset image,(np(3),np(4)),colour
Endif
If shape="circlepointset" Then
Pset image,(np(3),np(4)),colour
End If
Case Else
Print "unknown rotation shape"
End Select
End Sub
dim shared as double next_x,next_y
sub paintstring(x as double,_
y as double,_
s as string,_
size as double,_
c as uinteger,_
line_angle as double=0,_
char_angle as double=0,_
thickness_tweak as double=1,_
image as any pointer=0)
dim l as integer=len(s)
dim px as double=16*size+x
y=y+16*size
dim py as double=y'16*size+y
dim z as integer=0
dim th as double'=4
th=((.5-size)/4.5+5)*thickness_tweak
dim sp as double=6
dim sp2 as double=6
dim pi as double=4*atn(1)
dim la as double=(line_angle *.5)
dim ca as double=(char_angle*.5)
sp2=sp2+30*abs(sin(ca*pi/180-la*pi/180))
#macro set(x1,y1,x2,y2,sarc,earc,shape,im)
rotate(px,py,x1,y1,x2,y2,sarc,earc,-char_angle,1,size,c,th*size,shape,im)
#endmacro
#macro spaces(xpixels,ypixels)
px=px+(xpixels*size+sp2*size)*cos(line_angle*pi/180)
py=py-(ypixels*size+sp2*size)*sin(line_angle*pi/180)
next_x=px-16*size
next_y=py-16*size
#endmacro
for n as integer=1 to l
select case mid$(s,n,1)
case " "
spaces(30,30)
case "|"
z=z+1
px=(x+16*size+z*16*sin(line_angle*pi/180))+1.3*z*(24*size+size*sp*size)*sin(line_angle*pi/180)
py=(y+z*16*cos(line_angle*pi/180))+1.3*z*(24*size+size*sp*size)*cos(line_angle*pi/180)
next_x=px-16*size
next_y=py-16*size
case "1"
set(px-8,py-18,px-8,py+16,.0,.0,"line",image)'vert
set(px-8,py-16,px-12,py-8,.0,.0,"line",image)
spaces(12,12)
case "2"
set(px-2,py-8,9,1,310,530,"circle",image)'curve
set(px-15,py+14,px+5,py-2,.0,.0,"line",image)
set(px-16,py+14,px+10,py+14,.0,.0,"line",image)'base
spaces(28,28)
case "3"
set(px-2,py-7,9,1,300,530,"circle",image)'curve top
set(px-2,py+6,9,1,190,395,"circle",image)'curve
set(px-3,py,px+5,py,.0,.0,"line",image)
spaces(28,28)
case "4"
set(px-16,py+4,px+12,py+4,.0,.0,"line",image)'horiz
set(px-14,py+4,px+4,py-16,.0,.0,"line",image)'slope
set(px+4,py-18,px+4,py+16,.0,.0,"line",image)
spaces(28,28)
case "5"
set(px-14,py-16,px+6,py-16,.0,.0,"line",image)'top
set(px-12,py-16,px-12,py+1,.0,.0,"line",image)'vert
set(px-4,py+6,9,1,210,500,"circle",image)'curve
spaces(28,28)
case "6"
set(px-2,py+6,9,1,360,360,"circle",image)'curve base
set(px+16,py+4,27,1,130,180,"circle",image)'curve edge
spaces(28,28)
case "7"
set(px-14,py-16,px+6,py-16,.0,.0,"line",image)'top
set(px+5,py-16,px-12,py+16,.0,.0,"line",image)'slope
spaces(26,26)
case "8"
set(px-2,py-7,9,1,320,575,"circle",image)'curve top
set(px-2,py+6,9,1,130,415,"circle",image)'curve
set(px-9,py-1,px+6,py-1,.0,.0,"line",image)
spaces(28,28)
case "9"
set(px-2,py-6,9,1,360,360,"circle",image)'top
set(px-20,py-4,27,1,310,360,"circle",image)
spaces(28,28)
case "0"
set(px,py-1,15,1,360,360,"circle",image)
spaces(36,36)
case "."
set(px-12,py+12,1,1,360,360,"circle",image)
spaces(10,10)
case "A"
set(px,py-16,px-12,py+16,.0,.0,"line",image)
set(px,py-16,px+12,py+16,.0,.0,"line",image)
set(px-8,py+3,px+8,py+3,.0,.0,"line",image)
spaces(30,30)'36
case "a"
set(px-4,py+4,10,1,360,360,"circle",image)
set(px+6,py-8,px+6,py+16,.0,.0,"line",image)
spaces(26,26)
case "B"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px-5,py-14,.0,.0,"line",image)'top
set(px-12,py+14,px-5,py+14,.0,.0,"line",image)'base
set(px-5,py-6,8,1,290,450,"circle",image)'top loop
set(px-5,py+6,8,1,270,430,"circle",image)'base loop
set(px-12,py,px-2,py,.0,.0,"line",image)'middle
spaces(24,24)
case "b"
set(px-2,py+4,10,1,360,360,"circle",image)
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)
spaces(28,28)
case "C"
set(px,py,14,1,60,300,"circle",image)
spaces(25,25)
case "c"
set(px-4,py+4,10,1,60,300,"circle",image)
spaces(20,20)
case "D"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)
set(px-5,py,14,1,270,450,"circle",image)
set(px-12,py-14,px-5,py-14,.0,.0,"line",image)
set(px-12,py+14,px-5,py+14,.0,.0,"line",image)
'rotate(px,py,px-24,py+20,px-24,py-20,0,0,-line_angle,1,size,rgb(255,0,0),1,"line",image)
spaces(30,30)
case "d"
set(px-4,py+4,10,1,360,360,"circle",image)
set(px+6,py-16,px+6,py+16,.0,.0,"line",image)
spaces(26,26)
case "E"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px+6,py-14,.0,.0,"line",image)'top
set(px-12,py+14,px+6,py+14,.0,.0,"line",image)'base
set(px-12,py,px-2,py,.0,.0,"line",image)'middle
spaces(25,25)
case "e"
set(px-4,py+4,10,1,0,320,"circle",image)
set(px-12,py+3,px+8,py+3,.0,.0,"line",image)
spaces(26,26)
case "F"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px+6,py-14,.0,.0,"line",image)'top
set(px-12,py,px-2,py,.0,.0,"line",image)'middle
spaces(24,24)
case "f"
set(px-2,py-8,10,1,0,170,"circle",image)'curve
set(px-12,py-10,px-12,py+16,.0,.0,"line",image)'vert
set(px-10,py,px-2,py,.0,.0,"line",image)'middle
spaces(28,28)
case "G"
set(px,py,14,1,50,350,"circle",image)
set(px,py,px+16,py,.0,.0,"line",image)
spaces(35,35)
case "g"
set(px-4,py+4,10,1,360,360,"circle",image)
set(px+6,py-6,px+6,py+20,.0,.0,"line",image)
set(px-4,py+17,10,1,230,345,"circle",image)
spaces(26,26)
case "H"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px+12,py-16,px+12,py+16,.0,.0,"line",image)'vert
set(px-12,py,px+12,py,.0,.0,"line",image)'middle
spaces(32,32)
case "h"
'set(px-6,py+4,10,1,0,150,"circle",image)
set(px-4,py+2,8,1,0,170,"circle",image)'curve right
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)
set(px+4,py,px+4,py+16,.0,.0,"line",image)
spaces(25,25)
case "I"
set(px,py+16,px,py-16,.0,.0,"line",image)'vert
set(px-12,py+14,px+12,py+14,.0,.0,"line",image)
set(px-12,py-14,px+12,py-14,.0,.0,"line",image)
spaces(30,30)
case "i"
set(px-12,py-6,px-12,py+16,.0,.0,"line",image)
set(px-12,py-14,1,1,360,360,"circle",image)
spaces(10,10)
case "J"
'set(px-2,py+4,12,1,200,270,"circle",image)
set(px-7,py+8,7,1,220,355,"circle",image)
set(px,py-16,px,py+9,.0,.0,"line",image)'vert
set(px-12,py-14,px+12,py-14,.0,.0,"line",image)'top
spaces(30,30)
case "j"
set(px,py-6,px,py+20,.0,.0,"line",image)
set(px-7,py+20,7,1,220,360,"circle",image)
set(px,py-14,1,1,360,360,"circle",image)
spaces(22,22)
case "K"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px+6,py-16,px-12,py,.0,.0,"line",image)'upper
set(px+6,py+16,px-6,py-3,.0,.0,"line",image)
spaces(25,25)
case "k"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px+3,py-6,px-12,py,.0,.0,"line",image)'upper
set(px,py+16,px-8,py-3,.0,.0,"line",image)'lower
spaces(20,20)
case "L"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py+14,px+6,py+14,.0,.0,"line",image)'base
spaces(25,25)
case "l"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
spaces(10,10)
case "M"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px+12,py-16,px+12,py+16,.0,.0,"line",image)'vert
set(px-12,py-16,px,py,.0,.0,"line",image)'left arm
set(px+12,py-16,px,py,.0,.0,"line",image)'right arm
spaces(32,32)
case "m"
set(px-6,py+2,6,1,0,170,"circle",image)'curve left
set(px+6,py+2,6,1,0,170,"circle",image)'curve right
set(px-12,py-5,px-12,py+16,.0,.0,"line",image)'vert left
set(px+12,py,px+12,py+16,.0,.0,"line",image)'vert right
set(px,py+16,px,py,.0,.0,"line",image)'mid arm
spaces(32,32)
case "N"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px+12,py-16,px+12,py+16,.0,.0,"line",image)'vert
set(px-12,py-16,px+12,py+16,.0,.0,"line",image)'middle
spaces(32,32)
case "n"
set(px-4,py+2,8,1,0,170,"circle",image)'curve right
set(px-12,py-5,px-12,py+16,.0,.0,"line",image)'vert left
set(px+4,py+16,px+4,py,.0,.0,"line",image)'mid arm
spaces(24,24)
case "O"
set(px,py,14,1,360,360,"circle",image)
spaces(36,36)
case "o"
set(px-4,py+4,10,1,360,360,"circle",image)
'set(px+6,py-16,px+6,py+16,.0,.0,"line",image)
spaces(26,26)
case "P"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px-5,py-14,.0,.0,"line",image)'top
'set(px-12,py+14,px-5,py+14,.0,.0,"line",image)'base
set(px-5,py-6,8,1,280,450,"circle",image)'top loop
'set(px-5,py+6,10,1,270,430,"circle",image)'base loop
set(px-12,py+2,px-2,py+2,.0,.0,"line",image)'middle
spaces(24,24)
case "p"
set(px-5,py+4,10,1,270,435,"circle",image)' loop
set(px-14,py-5,px-2,py-5,.0,.0,"line",image)'top
set(px-12,py+14,px-5,py+14,.0,.0,"line",image)'base
set(px-12,py-6,px-12,py+26,.0,.0,"line",image)'vert
spaces(24,24)
case "Q"
set(px,py,14,1,360,360,"circle",image)
set(px+5,py+20,16,1,400,460,"circle",image)
spaces(36,36)
case "q"
set(px-5,py+6,10,1,110,270,"circle",image)' loop
set(px-9,py-3,px+2,py-3,.0,.0,"line",image)'top
set(px-8,py+16,px,py+16,.0,.0,"line",image)'base
set(px,py-3,px,py+26,.0,.0,"line",image)'vert
spaces(20,20)
case "R"
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px-5,py-14,.0,.0,"line",image)'top
'set(px-12,py+14,px-5,py+14,.0,.0,"line",image)'base
set(px-5,py-6,8,1,290,450,"circle",image)'top loop
'set(px-5,py+6,10,1,270,430,"circle",image)'base loop
set(px-12,py+2,px-2,py+2,.0,.0,"line",image)'middle
set(px-8-1+3,py+1,px+12-8-1,py+16+1-2,.0,.0,"line",image)'slope
spaces(24,24)
case "r"
set(px-4,py+4,10,1,30,130,"circle",image)
set(px-12,py-8,px-12,py+16,.0,.0,"line",image)
spaces(24,24)
case "S"
set(px-2,py-7,8,1,20,240,"circle",image)'curve top
set(px-2,py+6,8,1,200,500,"circle",image)'curve
'set(px-9,py-1,px+6,py-1,.0,.0,"line",image)
spaces(26,26)
case "s"
set(px-4,py+4,10,1,40,140,"circle",image)'top
set(px-1,py-4,10,1,180,240,"circle",image)'topslant
set(px-6,py+14,10,1,20,100,"circle",image)'baseslant
set(px-4,py+4,10,1,220,325,"circle",image)'base
'set(px-12,py-4,px+2,py+12,.0,.0,"line",image)
'set(px+6,py-8,px+6,py+16,.0,.0,"line",image)
spaces(26,26)
case "T"
set(px,py-12,px,py+16,.0,.0,"line",image)'vert
set(px-16,py-12-2,px+16,py-12-2,.0,.0,"line",image)
spaces(34,34)
case "t"
set(px-12,py-16,px-12,py+10,.0,.0,"line",image)'edge
set(px-12,py-4,px-2,py-4,.0,.0,"line",image)
set(px-4,py+4,10,1,210,320,"circle",image)
spaces (24,24)
case "U"
set(px-12,py-16,px-12,py+8,.0,.0,"line",image)'vert
set(px+12,py-16,px+12,py+8,.0,.0,"line",image)'vert
set(px,py,14,1,205,335,"circle",image)
'set(px-12,py,px+12,py,.0,.0,"line",image)'middle
spaces(33,33)
case "u"
set(px-4,py+4,10,1,210,360,"circle",image)
set(px+6,py-6,px+6,py+16,.0,.0,"line",image)
set(px-12,py-6,px-12,py+10,.0,.0,"line",image)'left edge
spaces(26,26)
case "V"
set(px,py+16,px-12,py-16,.0,.0,"line",image)
set(px,py+16,px+12,py-16,.0,.0,"line",image)
'set(px-8,py+3,px+8,py+3,.0,.0,"line",image)
spaces(32,32)'36
Case "v"
set(px-12,py-6,px-4,py+16,.0,.0,"line",image)'left
set(px-4,py+16,px+4,py-6,.0,.0,"line",image)
spaces(24,24)
Case "W"
set(px-12,py-16,px-8,py+16,.0,.0,"line",image)'vert left
set(px+12,py-16,px+8,py+16,.0,.0,"line",image)'vert
set(px-8,py+16,px,py,.0,.0,"line",image)'left arm
set(px+8,py+16,px,py,.0,.0,"line",image)'right arm
spaces(32,32)
Case "w"
set(px-14,py-6,px-8,py+16,.0,.0,"line",image)'vert left
set(px+8,py+16,px+12,py-6,.0,.0,"line",image)'vert right
set(px-8,py+16,px,py,.0,.0,"line",image)'left arm
set(px+8,py+16,px,py,.0,.0,"line",image)'right arm
spaces(33,33)
case "X"
set(px-12,py-16,px+12,py+16,.0,.0,"line",image)
set(px+12,py-16,px-12,py+16,.0,.0,"line",image)
spaces(32,32)
case "x"
set(px-12,py-6,px+2,py+16,.0,.0,"line",image)
set(px+2,py-6,px-12,py+16,.0,.0,"line",image)
spaces(22,22)
case "Y"
set(px-12,py-16,px,py,.0,.0,"line",image)
set(px+12,py-16,px,py,.0,.0,"line",image)
set(px,py,px,py+16,.0,.0,"line",image)
spaces(32,32)
case "y"
set(px-4,py+4,8,1,180,380,"circle",image)'top
set(px+4,py-6,px+4,py+20,.0,.0,"line",image)'right
set(px-6,py+17,10,1,230,345,"circle",image)'base
set(px-12,py-6,px-12,py+4,.0,.0,"line",image)'left
spaces(24,24)
case "Z"
set(px-12,py-14,px+12,py-14,.0,.0,"line",image)'top
set(px-12,py+14,px+12,py+14,.0,.0,"line",image)
set(px+10,py-14,px-10,py+14,.0,.0,"line",image)'slope
spaces(30,30)
case "z"
set(px-16,py-4,px+2,py-4,.0,.0,"line",image)'top
set(px-16,py+14,px+2,py+14,.0,.0,"line",image)'base
set(px+1,py-5,px-14,py+14,.0,.0,"line",image)'slope
spaces(20,20)
'************************************************
case ","
set(px-12,py+12,px-18,py+20,.0,.0,"line",image)
set(px-12,py+12,1,1,360,360,"circle",image)
spaces(10,10)
case"£"
set(px-5,py-5,8,1,40,220,"circle",image)'top
set(px-19-5-5,py+10-5,18,1,320,390,"circle",image)
set(px-16,py+16,px+8,py+16,.0,.0,"line",image)'base
set(px-16,py+2,px,py+2,.0,.0,"line",image)
spaces(28,28)
case "$"
set(px-2,py-7,8,1,20,240,"circle",image)'curve top
set(px-2,py+6,8,1,200,495,"circle",image)'curve
set(px-2,py-17,px-2,py+17,.0,.0,"line",image)
'set(px-9,py-1,px+6,py-1,.0,.0,"line",image)
spaces(26,26)
case "%"
set(px-10,py-10,6,1,360,360,"circle",image)
set(px+10,py+10,6,1,360,360,"circle",image)
set(px+8,py-8,px-8,py+8,.0,.0,"line",image)
spaces(33,33)
case "^"
set(px-14,py,px-7,py-16,.0,.0,"line",image)
set(px-7,py-16,px,py,.0,.0,"line",image)
spaces(20,20)
case"&"
set(px-2,py-7,8,1,70,220,"circle",image)'curve top
set(px-2,py+6,8,1,110,415,"circle",image)'curve
set(px-4-4-2,py-8,px+12-4,py+16,.0,.0,"line",image)
'set(px-9,py-1,px+6,py-1,.0,.0,"line",image)
spaces(28,28)
case "*"
set(px-12,py-6-8,px+2,py+16-8,.0,.0,"line",image)
set(px+2,py-6-8,px-12,py+16-8,.0,.0,"line",image)
set(px-16,py-3,px+6,py-3,.0,.0,"line",image)
spaces(24,24)
case "("
set(px+22,py,38,1,150,210,"circle",image)
spaces(12,12)
case ")"
set(px-22-16-6,py,38,1,330,390,"circle",image)
spaces(12,12)
case "-"
set(px-16,py,px+8,py,.0,.0,"line",image)
spaces(26,26)
case "_"
set(px-16,py+16,px+16,py+16,.0,.0,"line",image)
spaces(34,34)
case "+"
set(px-16,py,px+8,py,.0,.0,"line",image)
set(px-4,py+12,px-4,py-12,.0,.0,"line",image)
spaces(26,26)
case "="
set(px-16,py-4,px+8,py-4,.0,.0,"line",image)
set(px-16,py+4,px+8,py+4,.0,.0,"line",image)
spaces(26,26)
case "!"
set(px-12,py-16,px-12,py+6,.0,.0,"line",image)
set(px-12,py+12,1,1,360,360,"circle",image)
spaces(10,10)
case "¬"
set(px-16,py+4,px+8,py+4,.0,.0,"line",image)
set(px+6,py+4,px+6,py+12,.0,.0,"line",image)
spaces(26,26)
case "`"
set(px-16,py-16,px-12,py-12,.0,.0,"line",image)
spaces(8,8)
case ";"
set(px-12,py-4,1,1,360,360,"circle",image)'top
set(px-12,py+12,px-18,py+20,.0,.0,"line",image)
set(px-12,py+12,1,1,360,360,"circle",image)
spaces(10,10)
case ":"
set(px-12,py-4,1,1,360,360,"circle",image)'top
'set(px-12,py+12,px-18,py+20,.0,.0,"line",image)
set(px-12,py+12,1,1,360,360,"circle",image)
spaces(10,10)
case "@"
set(px,py,14,1,0,290,"circle",image)
set(px+6,py,7,1,100,365,"circle",image)
spaces(36,36)
case "'"
set(px-12,py-12,px-18,py-4,.0,.0,"line",image)
set(px-12,py-12,1,1,360,360,"circle",image)
spaces(10,10)
case "#"
set(px-16,py-4,px+8,py-4,.0,.0,"line",image)
set(px-16,py+4,px+8,py+4,.0,.0,"line",image)
set(px-8,py-12,px-8,py+12,.0,.0,"line",image)
set(px,py-12,px,py+12,.0,.0,"line",image)
spaces(26,26)
case "~"
set(px-8,py+16,14,1,60,120,"circle",image)
set(px+4,py-8,14,1,240,300,"circle",image)
spaces(30,30)
case "/"
set(px+14,py-16,px-14,py+16,.0,.0,"line",image)
spaces(34,34)
case ""
set(px-14,py-16,px+14,py+16,.0,.0,"line",image)
spaces(34,34)
case "["
set(px-12,py-16,px-12,py+16,.0,.0,"line",image)'vert
set(px-12,py-14,px-4,py-14,.0,.0,"line",image)'top
set(px-12,py+14,px-4,py+14,.0,.0,"line",image)
spaces(14,14)
case "]"
set(px-4,py-16,px-4,py+16,.0,.0,"line",image)'vert
set(px-4,py-14,px-12,py-14,.0,.0,"line",image)'top
set(px-12,py+14,px-4,py+14,.0,.0,"line",image)
spaces(16,16)
case "{"
set(px+12,py-8,28,1,160,200,"circle",image)
set(px+12,py+8,28,1,160,200,"circle",image)
spaces(8,8)
case "}"
set(px-12-16-6,py-8,28,1,340,380,"circle",image)
set(px-12-16-6,py+8,28,1,340,380,"circle",image)
spaces(14,14)
case "<"
set(px-16,py,px+4,py-12,.0,.0,"line",image)
set(px-16,py,px+4,py+12,.0,.0,"line",image)
spaces(24,24)
case ">"
set(px+4,py,px-16,py-12,.0,.0,"line",image)
set(px+4,py,px-16,py+12,.0,.0,"line",image)
spaces(24,24)
case "?"
set(px-5,py-6,8,1,280,490,"circle",image)'top loop
set(px-4,py,px-4,py+8,.0,.0,"line",image)
set(px-4,py+15,1,1,360,360,"circle",image)
spaces(24,24)
case """"
set(px-12,py-16,px-18,py-8,.0,.0,"line",image)
set(px-12,py-16,1,1,360,360,"circle",image)
set(px-4,py-16,px-10,py-8,.0,.0,"line",image)
set(px-4,py-16,1,1,360,360,"circle",image)
spaces(16,16)
case else
draw string(px,py),"?",c
spaces(24,24)
end select
next n
end sub
'************************* END OF PAINTSTRING ******************************
Couldn't you use a combination of SCREENSET and SCREEN COPY to achieve something?
Display one screen while working on another, then swap back and so on.
See WIKI http://www.freebasic.net/wiki/wikka.php ... gScreenset
Display one screen while working on another, then swap back and so on.
See WIKI http://www.freebasic.net/wiki/wikka.php ... gScreenset
When you scale the font with font.drawstring (,txt,xpos,ypos,xscale,yscale), you still get blocky edges. The way around this is to convert the font with the converter application (http://xaviorsoft.freebasic.net/fbprodu ... nv_win.zip) to the size you want.I have looked at at that XFont but I can not seem to figure out how to make the font larger and keep it smooth (in the vb version the total label is Arial Narrow and the font size is 28) how would i do that with the XFont?
If you want various font sizes, create the corresponding .xf files (e.g. ArialNarrow14.xf, ArialNarrow28.xf), load them into xfont with font.loadfont(filename, fi) and use the one you want with font.fontindex = fi