0 Favourites

Paint Program

This forum is currently in read-only mode.
  • can i make application like paint in construct

  • It's technically possible. Canvas object allows to do basic painting operations, and Image Manipulator object can save/load images to files.

  • Construct 3

    Buy Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Buy Now Construct 3 users don't see these ads
  • yes you can, easily.

    just use lerp for line drawing operations, sin cos for ellipse drawing, boxes are just using line drawings, same for polygons. and beziers can be done using Qarp.

    im not sure of how to do fill

  • thanks

    but could you please make a smaaall paint.cap so that i can play with it

  • thanks

    but could you please make a smaaall paint.cap so that i can play with it

    This is my old Paint example (works good with 0.98):

  • thanks

    but i could not understand lerp and Qarp

    thanks patryk for paint.cap

  • Lerp and Qarp are explained in System Expressions.

  • http://en.wikipedia.org/wiki/Bezier_curves

    this is what they do: lerp does this

    <img src="http://upload.wikimedia.org/wikipedia/commons/8/89/Bezier_1_big.gif">

    Qarp does this

    <img src="http://upload.wikimedia.org/wikipedia/commons/2/2d/Bezier_2_big.gif">

    could you implement something for cubic curves, they're the most difficult, and the most confusing to set up (i know you can just do lerps but still)

  • Any plans for a future pressure sensitive support for Wacom tablets?

  • en.wikipedia.org/wiki/Bezier_curves

    this is what they do: lerp does this

    <img src="http://upload.wikimedia.org/wikipedia/commons/8/89/Bezier_1_big.gif">

    Qarp does this

    <img src="http://upload.wikimedia.org/wikipedia/commons/2/2d/Bezier_2_big.gif">

    could you implement something for cubic curves, they're the most difficult, and the most confusing to set up (i know you can just do lerps but still)

    Theyre either lerp(qarp(a,b,x), quarp(a,b,x), x) or quarp (lerp(a,b,x), lerp(a,b,x), x)... And I'm not exactly sure if those two are the same thing, I won't bother to solve the equations now X)... But you could make your own function with function object, unless the cubic equation gets implemented.

  • thanks

    but can there be a method of adding line, square, circle, pen, eraser, bezier curve etc to be added under GRAPHIC category of INSERT OBJECT. because if we have to lern the programmin a lot then its quite difficult and canvas object only appears when we open bank game application. i think the purpose of construct is to help in making application easier. thanks ashlay

  • No, those features are not objects, they're canvas capabilities, so they would have to go in the canvas object.

    What's the formula for cubic interpolation?

  • Oops, I had an error in my previous post. Of course, when the number of order rises, the amount of parameters rises too. If I'm not mistaken, it's

    lerp(lerp(lerp(a,b,x),lerp(b,c,x),x),lerp(lerp(b,c,x),lerp(c,d,x),x),x)[/code:1w0nt6ri]
    
    And it can be shortened to [code:1w0nt6ri]lerp(qarp(a,b,c,x), quarp(b,c,d,x), x)[/code:1w0nt6ri]
    
    Fortunately cubic curve is the curve of highest order needed in practical computing :D...
  • No, those features are not objects, they're canvas capabilities, so they would have to go in the canvas object.

    What's the formula for cubic interpolation?

    well i have it in my game, one sec

    this is what i use for x

    (((Sprite15.x+((Sprite14.x-Sprite15.x)* ('t')))+(((Sprite14.x+((Sprite.ImagePointX(5)-Sprite14.x)* ('t')))-(Sprite15.x+((Sprite14.x-Sprite15.x)* ('t'))))* ('t')))+((((Sprite14.x+((Sprite.ImagePointX(5)-Sprite14.x)* ('t')))+(((Sprite.ImagePointX(5)+((Sprite.ImagePointX(4)-Sprite.ImagePointX(5))* ('t')))-(Sprite14.x+((Sprite.ImagePointX(5)-Sprite14.x)* ('t'))))* ('t')))-((Sprite15.x+((Sprite14.x-Sprite15.x)* ('t')))+(((Sprite14.x+((Sprite.ImagePointX(5)-Sprite14.x)* ('t')))-(Sprite15.x+((Sprite14.x-Sprite15.x)* ('t'))))* ('t'))))* ('t')))

    for y

    (((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t')))+((((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))+(((Sprite.ImagePointY(5)+((Sprite.ImagePointY(4)-Sprite.ImagePointY(5))* ('t')))-(Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t'))))* ('t')))-((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t'))))* ('t')))

    as you can see, its a B**** to set up, and its very confusing, having a Carp(a,b,c,d,x) would be very usefull, as drasa said, thankfully cubic is the highest order needed.

    for a 5 order thing youd need something like

    ((((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t')))+((((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))+(((Sprite.ImagePointY(5)+((Sprite.ImagePointY(4)-Sprite.ImagePointY(5))* ('t')))-(Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t'))))* ('t')))-((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t'))))* ('t'))))+(((((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t')))+((((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))+(((Sprite.ImagePointY(5)+((Sprite.ImagePointY(4)-Sprite.ImagePointY(5))* ('t')))-(Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t'))))* ('t')))-((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t'))))* ('t'))))-((((((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t')))+((((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))+(((Sprite.ImagePointY(5)+((Sprite.ImagePointY(4)-Sprite.ImagePointY(5))* ('t')))-(Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t'))))* ('t')))-((Sprite15.y+((Sprite14.y-Sprite15.y)* ('t')))+(((Sprite14.y+((Sprite.ImagePointY(5)-Sprite14.y)* ('t')))-(Sprite15.y+((Sprite14.y-Sprite15.y)* ('t'))))* ('t'))))* ('t'))))+)*('t'))

    yea, something like that.

    the wikipedia article explains it very well

  • OK, got a cubic expression in the next build!

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)
Similar Topics Posts Views Last Post
Unread hot topic
59 9,526
DesixStudios's avatar
DesixStudios
Unread hot topic
50 15,349
Tetriser's avatar
Tetriser
Unread hot topic
42 7,787
jobel's avatar
jobel