Jump to content

Recommended Posts

I have a round cap style arrow (red) that I want to terminate at exactly the end of the line, so that it lines up properly with the heads of other arrows (blue), as you see below:

1998902524_PixelSnap2020-09-09at23_42.18@2x.png.8c66636cdca5f9d94d737a26e8fdb88b.png

However, this is not the default behavior of Affinity, which actually does this:

2097761167_PixelSnap2020-09-09at23_42.33@2x.png.815c5d15fb8413b94754c726fe1ea9ed.png

Of course, you can manually offset, in this case moving the rear of the arrow 4 pixels up. That will make it look like this:

2109514798_PixelSnap2020-09-09at23_42.49@2x.png.5bfc2d0fa2bfa25244209689213f891e.png

But this is not a good solution, since this 4-pixel offset will not be preserved when the arrow (or a symbol it is part of) is transformed. The way I got the first image was quite hacky and doesn't really work properly: it was to choose an arrow head ("barbed") and shrink it to 33.33% so that it falls within the stroke itself and you can't see it. This for some reason changes the behavior of Affinity so that it starts the rounded cap at exactly the endpoint.

Unfortunately, this this hacky solution doesn't actually work in important cases. For example, here the the barb is revealed as soon as you use dashing on the red line (the dashing doesn't show up here as it is too coarse):

1058306377_PixelSnap2020-09-09at23_43_43@2x.png.26e8c0a5e678e03e5d66d3af123ee752.png

I can't think of any other way of getting the right behavior here...

The obviously missing feature seems to be a fourth kind of cap, a "round flush cap" (the "flush" option is already available for square caps, so it's odd that it isn't available for round caps). I've mocked it up here, it's the second one from the left, the meaning should be pretty clear:

Untitled.png.7669f17439cb3b4982cec263e7e564e6.png

An alternate missing feature that would accomplish the same thing is simply a "rounded cap" arrowhead that does nothing more than appear as a filled circle with exactly the same width as the stroke. Unfortunately you cannot use the existing filled circle arrowheads to do this properly, since when you set the filled circle arrowhead to 33.33%, which makes it match the stroke width, the three different kinds of stroke all end at slightly the wrong points (from left to right we have square cap, rounded cap, and flush square cap):

246609611_PixelSnap2020-09-10at00_21.51@2x.png.87f7bdde0b998e187c4a43012874e33a.png

 

 

PixelSnap 2020-09-09 at 23.42.49@2x.png

Edited by Taliesin Beynon
Filled in more detail about about what goes wrong with using filled circle arrowhead.
Link to comment
Share on other sites

Welcome to the forums @Taliesin Beynon
Depending on how accurate you need your line-end to be you can use this (slightly-nasty) ‘trick’ in Designer to get something which looks okay, up to a point.
Using the Appearance Panel, add two strokes of equal width to your curve and use the settings given in my two attached screen-grabs to add arrow heads of certain types and certain sizes.
It’s not a pretty solution, and it might not work in the future, but it could be okay for what you need (it doesn’t work well with curved lines, just straight ones, again, up to a point).
Hopefully someone else can come up with a better solution.

Edit: I've attached the file so you can look at it.

Annotation 2020-09-10 085310.png

Annotation 2020-09-10 085345.png

double-arrowhead-trick.afdesign

Edited by GarryP
Added example document.
Link to comment
Share on other sites

10 hours ago, Taliesin Beynon said:

The obviously missing feature seems to be a fourth kind of cap, a "round flush cap" (the "flush" option is already available for square caps, so it's odd that it isn't available for round caps). I've mocked it up here, it's the second one from the left, the meaning should be pretty clear:

Untitled.png.7669f17439cb3b4982cec263e7e564e6.png

My opinion: the shape of the end of the line (Cap) should only define its "shape", not its location relative to the end point. Therefore, the cap should only be Round or Square (or another one, such as Triangle), and the location should be defined using Align. What you require would then be realized by Round Cap with Align to Inside.

Affinity Store (MSI/EXE): Affinity Suite (ADe, APh, APu) 2.5.5.2636 (Retail)
Dell OptiPlex 7060, i5-8500 3.00 GHz, 16 GB, Intel UHD Graphics 630, Dell P2417H 1920 x 1080, Windows 11 Pro, Version 23H2, Build 22631.4317.
Dell Latitude E5570, i5-6440HQ 2.60 GHz, 8 GB, Intel HD Graphics 530, 1920 x 1080, Windows 11 Pro, Version 23H2, Build 22631.4317.
Intel NUC5PGYH, Pentium N3700 2.40 GHz, 8 GB, Intel HD Graphics, EIZO EV2456 1920 x 1200, Windows 10 Pro, Version 21H1, Build 19043.2130.

Link to comment
Share on other sites

12 hours ago, Taliesin Beynon said:

An alternate missing feature that would accomplish the same thing is simply a "rounded cap" arrowhead that does nothing more than appear as a filled circle with exactly the same width as the stroke.

What if they eliminate the Cap property completely, & redefine the arrow property as what it really is, that being the line end property? That way, the  'at the end' & 'within the line' properties could be applied to any type of line end.

I remember reading that the arrow line end feature is still a work in progress, & that eventually we should be able to define our own custom end shapes. (The Affinity logo shape supposedly is sort of a placeholder for that.) Maybe when they add that they will rework the whole thing, eliminate both Cap & the 'none' end options, & it will be more user friendly & flexible?

All 3 1.10.8, & all 3 V2.5.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Link to comment
Share on other sites

2 hours ago, Pšenda said:

My opinion: the shape of the end of the line (Cap) should only define its "shape", not its location relative to the end point. Therefore, the cap should only be Round or Square (or another one, such as Triangle), and the location should be defined using Align. What you require would then be realized by Round Cap with Align to Inside.

Hmmm I agree, but I don’t think that is even complete enough. If you think about it, there are really three relevant caps: the internal caps (turn on dashing to see this ) and the start and end caps. I think all of these should be independently configurable (the internal caps could be hidden in the dashing panel and by default inherit from the start and end caps). All of these caps also should have the options of being flush or extending beyond the cap point — but you could also generalize these two options to be on a scale from 0% (flush) to 100% (extended), where the percentage is of stroke width. This would settle the whole question in the most general possible way!

Link to comment
Share on other sites

1 hour ago, R C-R said:

What if they eliminate the Cap property completely, & redefine the arrow property as what it really is, that being the line end property? That way, the  'at the end' & 'within the line' properties could be applied to any type of line end.

I remember reading that the arrow line end feature is still a work in progress, & that eventually we should be able to define our own custom end shapes. (The Affinity logo shape supposedly is sort of a placeholder for that.) Maybe when they add that they will rework the whole thing, eliminate both Cap & the 'none' end options, & it will be more user friendly & flexible?

I’m not sure I agree, since caps also effect internal segments that are produced by dashing, which doesn’t have anything to do with arrowheads.

Link to comment
Share on other sites

3 hours ago, GarryP said:

Welcome to the forums @Taliesin Beynon
Depending on how accurate you need your line-end to be you can use this (slightly-nasty) ‘trick’ in Designer to get something which looks okay, up to a point.
Using the Appearance Panel, add two strokes of equal width to your curve and use the settings given in my two attached screen-grabs to add arrow heads of certain types and certain sizes.
It’s not a pretty solution, and it might not work in the future, but it could be okay for what you need (it doesn’t work well with curved lines, just straight ones, again, up to a point).
Hopefully someone else can come up with a better solution.

Edit: I've attached the file so you can look at it.

Annotation 2020-09-10 085310.png

Annotation 2020-09-10 085345.png

double-arrowhead-trick.afdesign 8 kB · 0 downloads

Thanks, I really appreciate your help. That is clever. But will it work with dashing? My current barb approach already works when there is no dashing and requires only one curve, so handles multiple internal nodes etc properly.

Link to comment
Share on other sites

1 hour ago, Taliesin Beynon said:

I’m not sure I agree, since caps also effect internal segments that are produced by dashing, which doesn’t have anything to do with arrowheads.

What if instead of applying only to the ends of the line, the line end property was applied collectively to each segment of dashed lines? Would that work for you?

All 3 1.10.8, & all 3 V2.5.6 Mac apps; 2020 iMac 27"; 3.8GHz i7, Radeon Pro 5700, 32GB RAM; macOS 10.15.7
A
ll 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.