$drawLine(<x1:integer>,<y1_integer>,<x2:integer>,<y2:integer>) |
Draws a line from (x1, y1) to (x2, y2) and sets the current pen position to (x2, y2). |
$begin(<paint_device:object>) |
Begins painting the paint device <paint_device>: the parameter must be a widget or a pixmap. Warning: A paint device can only be painted by one painter at a time. |
$beginPdf(<file_name:string>) |
Begins painting on a file using the PDF format. At present the PDF support is in experimental state. |
$end() |
Ends painting. Any resources used while painting are released. |
$setPen(<rgb or hsv array value or [<red>,<green>,<blue>][<hue>,<saturation>,<value>],[system color:RGB or HSV) |
The pen defines the lines or text, color. You can set it with Red, Green, Blue, or H, S, V value All parameters are in integer form. |
$setPen(<rgb or hsv array value or [<red>,<green>,<blue>][<hue>,<saturation>,<value>],[opacity],[system color:RGB or HSV]) |
The pen defines the lines or text, color. You can set it with Red, Green, Blue, or H, S, V value All parameters are in integer form. The HSV system, like RGB, has three components: * H, for hue, is either 0-359 if the color is chromatic (not gray), or meaningless if it is gray. It represents degrees on the color wheel familiar to most people. Red is 0 (degrees), green is 120 and blue is 240. * S, for saturation, is 0-255, and the bigger it is, the stronger the color is. Grayish colors have saturation near 0; very strong colors have saturation near 255. * V, for value, is 0-255 and represents lightness or brightness of the color. 0 is black; 255 is as far from black as possible. Examples: Red is H=0, S=255, V=255. Light red could have H about 0, S about 50-100, and S=255. ES: $setPen(00,00,00) for black; Default color mode is RGB; |
$setBrush(<rgb or hsv array value or [<red>,<green>,<blue>][<hue>,<saturation>,<value>],[system color:RGB or HSV) |
Sets the painter's brush to have the specified color. Example: | class (wdg,widget) { paintevent() { %b=$new(painter) %b->$setBackgroundMode(Opaque) %b->$setBrush(0,250,250) %b->$begin($$) %b->$drawEllipse(50,50,100,50) } } %aa=$new(wdg)
%aa->$show() | |
$drawRect(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>) |
Draws a rectangle with upper left corner at (x, y) and with width w and height h. |
$drawRoundRect(<start_angle:integer>,<angle_length:integer>,<width:unsigned integer>,<height:unsigned integer>,<xr:integer>,<y:integer>) |
Draws a rectangle with rounded corners at (x, y), with width w and height h.[rb] The xCor and yCor arguments specify how rounded the corners should be (range is 0->99). |
$drawPie(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>) |
Draws a pie defined by the rectangle (x, y, w, h), the start angle a and the arc length alen. The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360). |
$drawArc(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>) |
Draws an arc defined by the rectangle (x, y, w, h), the start angle a and the arc length alen. The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360). |
$drawPoint(<x:integer>,<y:integer>) |
Draws a point at x and y coordinates. |
$drawEllipse(<x:integer>,<y:integer>,<sizew:unsigned integer>,<sizeh:unsigned integer>) |
Draws an ellipse with center at (x + w/2, y + h/2) and size (w, h). |
$drawChord(<x:integer>,<y:integer>,<w:unsigned integer>,<h:unsigned integer>,<angle:integer>,<alen:integer>) |
Draws a chord defined by the rectangle (x, y, w, h), the start angle a and the arc length alen. The angles <angle> and <alen> are 1/16th of a degree, i.e. a full circle equals 5760 (16*360). |
$drawText(<x:integer>,<y:integer>,<width:unsigned integer>,<height:unsigned integer>,<text:string>[,<flag:string>[,<flag:string>[,...]]]) |
Draws the given <text> within the rectangle specified by <x>,<y> <width> and <height>. The <flag> parameters may be: Left Top Right Bottom HCenter VCenter Center TextSingleLine TextExpandTabs TextShowMnemonic TextWordWrap TextIncludeTrailingSpaces
|
$drawPixmap(<x:integer>,<y:integer>,<pixmap:hobject>,<sx:integer>,<sy:integer>,<ex:integer>,<ey:integer>) |
Draws a pixmap at x,y coordinates
|
$setFont(<family:string>,<size:integer>[,<style:enum>,<style:enum>,..])
|
Set the font's family, size and style, valid flag for style are: italic bold underline overline strikeout fixedpitch
|
$setFontSize(<size:unsigned integer>)
|
Set the current painter font's size.
|
<integer>$fontAscent() |
Return the distance from the baseline to the highest position characters extend to. |
<integer>$fontDescent() |
Return the distance from the baseline to the lowest point characters extend to. |
<integer>$fontMetricsWidth(<text:string>) |
Returns the font metrics width for the painter's current font. |
<integer>$fontMetricsHeight() |
Returns the font metrics height for the painter's current font. |
$rotate(<angle:real>,[<axis:string>]) |
Rotates the coordinate system a degrees counterclockwise by the given angle about the optional parameter <axis>. Valid values for axis are: ZAxis, XAxis, YAxis. Optional parameter <axis> |
$translate(<dx:real>,<dy:real>) |
Translates the coordinate system by <dx>, <dy>. |
$shear(<dh:real>,<dv:real>) |
Shears the coordinate system by <dh>, <dv>. |
$scale(<dh:real>,<dw:real>) |
Scales the coordinate system by <dh>, <dv>. |
$setBackgroundMode(<bgMode:enum>) |
Sets the background mode of the painter to <bgMode>: Valid values are: - Transparent (that is the default value); - Opaque.
|
$setOpacity(<opacity_factor:real>) |
Sets the painter opacity that affects all painter operations (drawpixmap, drawtext...). Valid values range are from 0 (total transparency) to 1 (total opacity) You must invoke the $begin before using it. |
$setTextAntialiasing(<boolean>) |
Enable/disable antialias in text if possible. You must call the $begin before using it. |
$setAntialiasing(<boolean>) |
Enable/disable antialias in edges of primitives if possible. You must call the $begin before using it. |
$setSmoothPixmapTransform(<boolean>) |
Enable/disable smooth bilinear pixmap transformation algorithm (such as bilinear). You must call the $begin before using it. Example: | class (hello,widget) { constructor() { $$->%sintbl[]= $array( 0, 38, 71, 92, 100, 92, 71, 38,0, -38, -71, -92, -100, -92, -71, -38); $$->%index=0 $$->$starttimer( 30 ); $$->$resize(800,600 ); $$->%string=$0 $$->%waitfor=1; $$->%nextanim=0 $$->%Zoomindex=11 $$->%degree=0 $$->%Noanim=0 $$->%scrollright=-450 $$->%xoffset=4 $$->%yoffset=3 $$->%xstart=270 $$->%ystart=200 $$->%b=0 $$->%yoffs=400 $$->%Off=400 $$->%roll=1 } timerevent() { $$->%b = $(($$->%b + 1) & 15); if ($$->%nextanim == 1) $$->$repaint(1); $$->$repaint(0); } drawAnim() { %P->$setFont(32,"times",bold); %w=$(%P->$fontMetricsWidth($$->%string[$$->%index]) + 20); %h=$(%P->$fontMetricsHeight * 2); %pmx = $(($$->$width/2) -%w/2); %pmy = $(($$->$height()/2) - %h/2); %x = 10; %y= $((%h/2) + $$->$fontDescent()); %i=0 while ( $str.mid("Grifisx/Noldor",%i,1) != "") { %i16 = $(($$->%b+%i) & 15); %char=$str.mid("Grifisx/Noldor",%i,1) %P->$setPen($((15-%i16)*16),$((15-%i16)*16),$((15-%i16)*16) ); %P->$drawText( $(%x+$$->%xstart),$($$->%ystart+%y-$$->%sintbl[%i16]*%h/800),%char,1,Auto); %x += %P->$fontMetricsWidth(%char); %i++; } } matrixeffect() { if (($$->%Zoomindex == 99) && ($$->%degree==360)) return %P->$drawPixmap($(400-32),$(300-32),"kvirc.png",0,0,-1,-1) %P->$scale(0.$$->%Zoomindex,0.$$->%Zoomindex) if ($$->%Zoomindex != 99) $$->%Zoomindex++; %P->$rotate($$->%degree) %P->$translate(400,300) %P->$drawPixmap(-32,-32,"kvirc.png",0,0,-1,-1) %P->$setFont(28,"times",bold); %P->$reset() if ($$->%scrollright >= 550) return %P->$scale(0.$$->%Zoomindex,0.$$->%Zoomindex) %P->$translate(400,350) %P->$drawText($$->%scrollright,10,"Another cool class brought to you by...",-1,Auto) $$->%scrollright += 3; %P->$reset() } nextanim() { %p=$new(painter) %p->$setBackgroundMode(Opaque) %p->$setBrush($rand(255),$rand(255),$rand(255)) %p->$begin($$) %rand=$rand(5) %p->$drawrect($rand(800),$rand(400),120,200) %p->$drawArc($rand(800),$rand(400),120,200,20,$(16*20)) %p->$drawPie($rand(800),$rand(400),120,200,20,$(16*20)) %p->$drawChord($rand(800),$rand(400),120,200,20,$(16*20)) %p->$drawEllipse($rand(800),$rand(400),100,30) %p->$end() delete %p } paintEvent() { if ($$->%nextanim ==1) return $$->$nextanim() %pixmap=$new(pixmap) %pixmap->$resize($$->$width(),$$->$height()) %P=$new(painter); %P->$begin(%pixmap); $$->$drawanim $$->$matrixeffect %i=0 while (%i != 100) { %i16 = $(($$->%b+%i) & 15); %P->$setPen($((15-%i16)*16),$((15-%i16)*16),$((15-%i16)*16) ); %P->$drawpoint($rand(800),$rand(600)) %i++ } %P->$end objects.bitBlt $$ 0 0 %pixmap delete %pixmap delete %P if (%Pauseflag == 1) return if (($$->%Off<=60) && ($$->%roll<182)) $$->%roll += 2; if ($$->%roll>182) $$->%waitfor=0 if ($$->%Noanim != 1) $$->%degree += 16; if ($$->%degree >= 360) { $$->%degree=0; if ($$->%Zoomindex == 99) $$->%Noanim=1 } if ($$->%Noanim != 1) return if (($$->%xstart <1) && ($$->%xoffset == -4)) $$->%xoffset=4; if (($$->%xstart >$($$->$width()-%P->$fontMetricsWidth("Grifisx/Noldor"))) && ($$->%xoffset == 4)) $$->%xoffset=-4; if (($$->%ystart <1) && ($$->%yoffset == -3)) $$->%yoffset=3; if (($$->%ystart >$($$->$height()-60)) && ($$->%yoffset == 3)) $$->%yoffset=-3; $$->%xstart += $$->%xoffset; $$->%ystart += $$->%yoffset; } } %Hello=$new(hello) %Hello->$setWindowTitle("Painter effects" ); %Hello->$setFont(28,"times",bold); %Btn=$new(button,%Hello) %Btn->$setmaximumwidth(80) %Btn->$setmaximumheight(30) %Btn->$setFont(8,"times",bold); %Btn->$settext(Next) privateimpl(%Btn,mousepressevent) { if ($$->$parent->%nextanim==0) { $$->$parent->%nextanim=1 $$->$settext(Prev) } else { $$->$parent->%nextanim=0 $$->$settext(Next) } } %lay=$new(layout,%Hello) %lay->$addwidget(%Btn,4,0) %Hello->$setBackgroundColor("000000"); %Hello->$setmaximumwidth(800) %Hello->$setminimumwidth(780) %Hello->$setmaximumheight(600) %Hello->$setminimumheight(600) %Hello->$move(10,10) %Hello->$show(); | |
|