[Tutor] Canvas rectangle filling

Suresh Kumar Suresh Kumar" <suresh_vsamy@rediffmail.com
Wed Jun 18 17:42:02 2003


 This is a multipart mime message


--Next_1055611560---0-203.199.83.28-23025
Content-type: multipart/mixed;
	boundary="Next_1055611560---1-203.199.83.28-23025"

 This is a multipart mime message


--Next_1055611560---1-203.199.83.28-23025
Content-type: text/plain;
	charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Thanks Daniel,=0A     Thanks for your timely help. I got it. I created a "x=
mb" file and filled my rectangle. Still i have some problem that i would li=
ke to bring your attention. =0A       =0A     i have created a stack of rec=
tangles all of same size, say 200 pixel wide and 100 pixel height. Each rec=
tangle is given some color and stipple to "gray75". Then i placed some saml=
l rectangles of some size, say 50 pixel wide and 50 pixel height , on each =
bigger rectangle and assigened some color and stipple to "lines.xbm". I got=
 the o/p such that the smaller rectangles are filled with "line.xbm". But t=
he samller rectangles are looking so transparent. It means, all areas other=
 than ocupied by "line.xbm" is filled with bigger rectangle'c color. My req=
uirement is, all smaller rectangles should be filled with "lines.xbm" and t=
hey should not be transparent. =0A=0A   My coding is as follows:=0A   =0Ase=
lf.canvas.create_rectangle ( 100,100,200,200, fill=3D'blue', stipple=3D'gra=
y75)=0Aself.canvas.create_rectangle( 100,200,200,300,fill=3D'red', stipple=
=3D"gray50")=0Aself.canvas.create_rectangle((100,300,200,400, fill=3D'black=
', stipple=3D"gray25")=0A######### Small rectagnles=0Aself.canvas.create_re=
ctangle(100,150,150,200, fill=3D'black', stipple=3D"@line.xbm")=0Aself.canv=
as.create_rectangle(100,250,150,300, fill=3D'black', stipple=3D"@line.xbm")=
=0A=0A    I attached my required o/p in this mail as "sample.gif". Have a  =
 =0Alook and give me your suggestion and me let me how to avoid transparanc=
y.=0A=0AWith regeards,=0AV.Suresh Kumar.=0A  =0A=0A=0AOn Thu, 12 Jun 2003 A=
bel Daniel wrote :=0A>Suresh  Kumar wrote:=0A> > Hi,=0A> > Iam using python=
/tkinter/pmw in windows.=0A> > Most of graphics languages provides facility=
 to fill the rectangcle with=0A> > horizantal/vertical lines. I know that i=
n tkinter we can fill the canvas=0A> > rectangle's interior using "stipple"=
. But my customer is expecting the=0A> > rectangles to be filled with  diag=
nal/vertical/horizantal lines. Is=0A> > there any direct way is available i=
n tkinter/Pmw to fill the rectangle with=0A> > lines?=0A> > or i have to us=
e "create_line" command explicitly?=0A>Well, creating the lines invidually =
is an option, but i think it's a=0A>rather poor one. You would have to figu=
re out the endpoints of each=0A>line, which might work for rectangles, but =
will get almost impossible=0A>for circles, or arcs.=0A>(Not to mention that=
 you would be creating a lot of lines, which i guess=0A>would impact perfor=
mance.)=0A>=0A>I think the best idea would be to use stipple with custom bi=
tmaps. For=0A>example the following xbm file will create diagonal lines:=0A=
>----8<----=0A>/* Created with The GIMP */=0A>#define lines_width 16=0A>#de=
fine lines_height 16=0A>static unsigned char lines_bits[] =3D {=0A>    0x11=
, 0x11, 0x22, 0x22, 0x44, 0x44, 0x88, 0x88, 0x11, 0x11, 0x22, 0x22,=0A>    =
0x44, 0x44, 0x88, 0x88, 0x11, 0x11, 0x22, 0x22, 0x44, 0x44, 0x88, 0x88,=0A>=
    0x11, 0x11, 0x22, 0x22, 0x44, 0x44, 0x88, 0x88 };=0A>----8<-----=0A>Cop=
y-paste this into a file, call it 'lines.xbm', and use it like:=0A>canvas.c=
reate_rectangle(100,100,150,150, stipple=3D'@lines.xbm', fill=3D'black')=0A=
>=0A>There might be two problems:=0A>1) path to the xbm files. If you put y=
our xbm files somewhere else than=0A>the current directory, I think you wil=
l have to use the full path, like:=0A>... stipple=3D'@/path/to/file.xbm' ..=
.=0A>Which might complicate the matters as you have to keep track of where=
=0A>your xbm files are, and use the appropriate path.=0A>=0A>2) creating th=
e xbm files themselves. If you only need some options like=0A>'diagonal lin=
es, close the each other' or 'vertical lines, far apart'=0A>you could creat=
e some xbm files, and only provide those. (Essentially=0A>hardcoding thos p=
atterns.) If you need more flexibility, like 'lines at=0A>60 degrees angle,=
 2 pixels wide and 7 pixels apart' you will have to=0A>generate xbm files o=
n the fly. A way of pipeing the xbm data would come=0A>handy in this case, =
but I don't know if such exists. You might have to=0A>save the generated xb=
m data to be able to pass the filename to tkinter.=0A>I think generating th=
e xbm files on the fly will be pretty easy, as they=0A>are simply black&whi=
te bitmaps.=0A>=0A>According to=0A>http://www.pythonware.com/library/tkinte=
r/introduction/x2861-options.htm=0A>which is describing the options of arc =
object:=0A>"As of Tk 8.0p2, the stipple option is ignored on the Windows pl=
atform.=0A>To draw stippled pieslices or chords, you have to create corresp=
onding=0A>polygons."=0A>=0A>But I think that doesn't affect other objects. =
(I didn't test on Windows)=0A>=0A>Abel Daniel=0A>=0A>______________________=
_________________________=0A>Tutor maillist  -  Tutor@python.org=0A>http://=
mail.python.org/mailman/listinfo/tutor=0A
--Next_1055611560---1-203.199.83.28-23025
Content-type: text/html;
	charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<a href=3D"http://www.herohonda.com/karizma" target=3D"_blank">=0A<img src=
=3D"http://immail.rediff.com/icons/rediff_mail_gold/hhsignature_12062003.gi=
f" width=3D"496" height=3D"75" border=3D"0">=0A</a>=0A
--Next_1055611560---1-203.199.83.28-23025--
Content-type: image/gif
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="sample.gif"

R0lGODdhJgEaAfcAAAAAAAAAVQAAqgAA/wAkAAAkVQAkqgAk/wBJAABJVQBJqgBJ/wBtAABt
VQBtqgBt/wCSAACSVQCSqgCS/wC2AAC2VQC2qgC2/wDbAADbVQDbqgDb/wD/AAD/VQD/qgD/
/yQAACQAVSQAqiQA/yQkACQkVSQkqiQk/yRJACRJVSRJqiRJ/yRtACRtVSRtqiRt/ySSACSS
VSSSqiSS/yS2ACS2VSS2qiS2/yTbACTbVSTbqiTb/yT/ACT/VST/qiT//0kAAEkAVUkAqkkA
/0kkAEkkVUkkqkkk/0lJAElJVUlJqklJ/0ltAEltVUltqklt/0mSAEmSVUmSqkmS/0m2AEm2
VUm2qkm2/0nbAEnbVUnbqknb/0n/AEn/VUn/qkn//20AAG0AVW0Aqm0A/20kAG0kVW0kqm0k
/21JAG1JVW1Jqm1J/21tAG1tVW1tqm1t/22SAG2SVW2Sqm2S/222AG22VW22qm22/23bAG3b
VW3bqm3b/23/AG3/VW3/qm3//5IAAJIAVZIAqpIA/5IkAJIkVZIkqpIk/5JJAJJJVZJJqpJJ
/5JtAJJtVZJtqpJt/5KSAJKSVZKSqpKS/5K2AJK2VZK2qpK2/5LbAJLbVZLbqpLb/5L/AJL/
VZL/qpL//7YAALYAVbYAqrYA/7YkALYkVbYkqrYk/7ZJALZJVbZJqrZJ/7ZtALZtVbZtqrZt
/7aSALaSVbaSqraS/7a2ALa2Vba2qra2/7bbALbbVbbbqrbb/7b/ALb/Vbb/qrb//9sAANsA
VdsAqtsA/9skANskVdskqtsk/9tJANtJVdtJqttJ/9ttANttVdttqttt/9uSANuSVduSqtuS
/9u2ANu2Vdu2qtu2/9vbANvbVdvbqtvb/9v/ANv/Vdv/qtv///8AAP8AVf8Aqv8A//8kAP8k
Vf8kqv8k//9JAP9JVf9Jqv9J//9tAP9tVf9tqv9t//+SAP+SVf+Sqv+S//+2AP+2Vf+2qv+2
///bAP/bVf/bqv/b////AP//Vf//qv///yH5BAAAAAAALAAAAAAmARoBQAj/AP8JHCjvX0GB
Bw0SXIiQocKGEB9KTFiwoLOBGC9iFKhxY8eMGw1SdDgyYsmJCxNyDPnv40CXK0NqlKeSpc2b
OHPq3Mmzp82KJIOaFIpyaEOLLGG2TMp0I02iJ6NClRjTY1OrMhHW9Mm1q9evPoEaLUpW6tiR
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
rnfN6177+tfADrawh03sYht7ZwEBADs=

--Next_1055611560---0-203.199.83.28-23025
Content-type: image/gif
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="sample.gif"

R0lGODdhJgEaAfcAAAAAAAAAVQAAqgAA/wAkAAAkVQAkqgAk/wBJAABJVQBJqgBJ/wBtAABt
VQBtqgBt/wCSAACSVQCSqgCS/wC2AAC2VQC2qgC2/wDbAADbVQDbqgDb/wD/AAD/VQD/qgD/
/yQAACQAVSQAqiQA/yQkACQkVSQkqiQk/yRJACRJVSRJqiRJ/yRtACRtVSRtqiRt/ySSACSS
VSSSqiSS/yS2ACS2VSS2qiS2/yTbACTbVSTbqiTb/yT/ACT/VST/qiT//0kAAEkAVUkAqkkA
/0kkAEkkVUkkqkkk/0lJAElJVUlJqklJ/0ltAEltVUltqklt/0mSAEmSVUmSqkmS/0m2AEm2
VUm2qkm2/0nbAEnbVUnbqknb/0n/AEn/VUn/qkn//20AAG0AVW0Aqm0A/20kAG0kVW0kqm0k
/21JAG1JVW1Jqm1J/21tAG1tVW1tqm1t/22SAG2SVW2Sqm2S/222AG22VW22qm22/23bAG3b
VW3bqm3b/23/AG3/VW3/qm3//5IAAJIAVZIAqpIA/5IkAJIkVZIkqpIk/5JJAJJJVZJJqpJJ
/5JtAJJtVZJtqpJt/5KSAJKSVZKSqpKS/5K2AJK2VZK2qpK2/5LbAJLbVZLbqpLb/5L/AJL/
VZL/qpL//7YAALYAVbYAqrYA/7YkALYkVbYkqrYk/7ZJALZJVbZJqrZJ/7ZtALZtVbZtqrZt
/7aSALaSVbaSqraS/7a2ALa2Vba2qra2/7bbALbbVbbbqrbb/7b/ALb/Vbb/qrb//9sAANsA
VdsAqtsA/9skANskVdskqtsk/9tJANtJVdtJqttJ/9ttANttVdttqttt/9uSANuSVduSqtuS
/9u2ANu2Vdu2qtu2/9vbANvbVdvbqtvb/9v/ANv/Vdv/qtv///8AAP8AVf8Aqv8A//8kAP8k
Vf8kqv8k//9JAP9JVf9Jqv9J//9tAP9tVf9tqv9t//+SAP+SVf+Sqv+S//+2AP+2Vf+2qv+2
///bAP/bVf/bqv/b////AP//Vf//qv///yH5BAAAAAAALAAAAAAmARoBQAj/AP8JHCjvX0GB
Bw0SXIiQocKGEB9KTFiwoLOBGC9iFKhxY8eMGw1SdDgyYsmJCxNyDPnv40CXK0NqlKeSpc2b
OHPq3Mmzp82KJIOaFIpyaEOLLGG2TMp0I02iJ6NClRjTY1OrMhHW9Mm1q9evPoEaLUpW6tiR
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
rnfN6177+tfADrawh03sYht7ZwEBADs=

--Next_1055611560---0-203.199.83.28-23025--