Git Product home page Git Product logo

Comments (6)

zarocknz avatar zarocknz commented on July 20, 2024

Hi @jackzerby.

Thanks for your kind words.

I have taken a look at the screenshot and the issue described is unexpected; all line widths should be the same. I had a quick check on all the web browsers I have (Chrome, Firefox, Edge) and all line widths are the same as you expect (as seen in this screenshot)...

10pxlinewidth

Can you kindly give details of the device and web browser used to look at the wheel? Also a copy of your Winwheel config - i.e. the JSON parameters passed in to the constructor might be helpful.

Kind regards,
DouG.

from javascript-winwheel.

jackzerby avatar jackzerby commented on July 20, 2024

Thanks for the quick reply Doug!

I'm on Chrome OSX

Here is the complete js for how I'm using the wheel: https://gist.github.com/jackzerby/b8c3c7042be191dcc1977be308c28c18

Here is another screenshot: https://cl.ly/sMGl

from javascript-winwheel.

zarocknz avatar zarocknz commented on July 20, 2024

Thanks for posting the JS and another screenshot. I was able to use some of the Winwheel settings in your code to replicate the issue - well something similar - on my local dev.

Seems that setting the innerRadius causes this to happen so I looked at this code in Winwheel.js just now and see there are a couple of comments (flagged with //++) about there being some problems with innerRadius and the lines.

I'll have a play around and see if I can come up with a solution - will let you know.

from javascript-winwheel.

zarocknz avatar zarocknz commented on July 20, 2024

OK @jackzerby I might have the solution. As mentioned I could not replicate your issue exactly on my local (different browser I think), but I did get thinner lines as you originally described and seem to have fixed that problem, might sort things for you too.

Can you please track down this code in your copy of Winwheel.js and try changing it to the code below that and let me know if that fixes things?

Original code...

if (!this.innerRadius)
{
    this.ctx.moveTo(this.centerX, this.centerY);
}
else
{
   //++ do need to draw the starting line in the correct x + y based on the start angle
   //++ otherwise as seen when the wheel does not use up 360 the starting segment is missing the stroked side,
}

change to...

if (!this.innerRadius)
{
    this.ctx.moveTo(this.centerX, this.centerY);
}
else
{
   // Work out the x and y values for the starting point of the segment which is at its starting angle
   // but out from the center point of the wheel by the value of the innerRadius. Some correction for line width is needed.
   var iX = Math.cos(this.degToRad(seg.startAngle + this.rotationAngle - 90)) * (this.innerRadius - lineWidth / 2);
   var iY = Math.sin(this.degToRad(seg.startAngle + this.rotationAngle - 90)) * (this.innerRadius - lineWidth / 2);

   // Now move here relative to the center point of the wheel.
   this.ctx.moveTo(this.centerX + iX, this.centerY + iY);
}

Hoping that fixes things. If not I will take another look tomorrow night.

Cheers,
DouG

from javascript-winwheel.

Soean avatar Soean commented on July 20, 2024

@jackzerby This fix solves the problem for my wheel. Thanks for this library!

Before:
bildschirmfoto 2018-09-06 um 10 13 57

After:
bildschirmfoto 2018-09-06 um 10 10 11

Is it possible to set the stroke on all sides of the segment?

from javascript-winwheel.

zarocknz avatar zarocknz commented on July 20, 2024

@Soean Hi. Thanks for the screenshots of your wheel and confirming the code change fixed things for you.

I suspect the golden stroke line for segment 3 is there but hidden under the white stroke line for the start of segment 4. Damn.

Unfortunately HTML canvas always draws lines half in and half outside of shapes/paths, there is no option to make the stroke line go on the inside of the segment shapes. If there was that would solve this issue perfectly.

Actually I just had an idea. Since your stoke lines are normally white which appears to be the same as the canvas, what if you make the white lines 100% transparent? for example rgba(255, 255, 255, 0) and only make the gold one opaque?

Thanks,
DouG.

from javascript-winwheel.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.