I think I've seen all the previous replies. If so, here's a different, more mathematical, approach that can be combined with the gradient and other techniques mentioned before:
The main thing here is a function (pointsOfNorman, Norman because of the resemblance to a Norman window) that returns the points for a polygon graphic, given the starting point (X and Y), width, height, and ANGLE OF ROTATION and the first handler (doTest) is just there to test it with various parameters. Is this overkill? too slow? or what? I'd appreciate your comments. on doTest -- before running this test, create a polygon graphic named "NW" put 250 into theLeft put 250 into theTop repeat with i = 1 to 37 put 6*i - 5 into theWid put pi * (i-1)/18 into angRot repeat with j = 1 to 80 put 2*j into theHeight -- this is how you use the function set the points of grc "NW" to \ pointsOfNorman(theLeft,theTop,theWid,theHeight,angRot) wait 0 end repeat end repeat end doTest function pointsOfNorman L,T,wid,hite,rotAng --creates the points for a NormanWindow graphic (polygon) --"left", "top" (actually starting point), width, height, angle Of rotation -- (measured clockwise from rightward) -- use 0*pi for semicircle down -- use 0.5*pi for semicircle left -- use 1*pi for semicircle up -- use 1.5*pi for semicircle right -- use 2*pi for semicircle down -- (interpolate for a rotation other than these) -- first 3 points of rectangle put L,T into daPoints put round(L+wid*cos(rotAng)),round(T+wid*sin(rotAng)) into line 2 of daPoints put round(L+wid*cos(rotAng)-hite*sin(rotAng)),round(T+wid*sin(rotAng)+hite*cos(rotAng)) into line 3 of daPoints -- center of semiCircle put round(L+.5*wid*cos(rotAng)-hite*sin(rotAng)) into xCen put round(T+.5*wid*sin(rotAng)+hite*cos(rotAng)) into yCen put max(8, wid div 3) into numOfAngs -- number of straight lines to make semiCircle put wid / 2 into theRadius put 3 into lineNum put pi / numOfAngs into deltaAng repeat with i = 1 to numOfAngs -- calculates the coordinates for the i-th point of the semicircle put deltaAng * i into theAng add rotAng to theAng put xCen +theRadius*cos(theAng) into theX put yCen +theRadius*sin(theAng) into theY add 1 to lineNum put round(theX),round(theY) into line lineNum of daPoints end repeat -- and go back to the starting point add 1 to lineNum put L,T into line lineNum of daPoints return daPoints end pointsOfNorman Message: 4 Date: Wed, 1 Dec 2010 15:01:05 +0000 From: David Bovill <da...@vaudevillecourt.tv> To: How to use Revolution <use-livecode@lists.runrev.com> Subject: How to make a square topped, round rect bottomed graphic? Message-ID: <aanlktikqt9evu=zwwnwxahb6ws+kfu-vhaag=501b...@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 What is the most efficient way to make this? I thought I could have a polygon graphic which was opaque but not joined up and use that to add square corners to a roundrect graphic background - but it seems that every time I make it opaque it automatically joins the graphic points. What I want to be able to do is have a vector graphic which has the option to have rounded corners on either or both the top and bottom, whcih I can script. The most efficient way I can thin of doing it at the moment is to have a background roundrect graphic, on top of which I can place a polygon line to create square corners, and a white opaque graphic just inside the square boundary to cover up the round corners? Is there a better way? _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode