Taliesin Beynon Posted September 9, 2020 Share Posted September 9, 2020 (edited) 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: However, this is not the default behavior of Affinity, which actually does this: 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: 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): 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: 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): Edited September 9, 2020 by Taliesin Beynon Filled in more detail about about what goes wrong with using filled circle arrowhead. Quote Link to comment Share on other sites More sharing options...
GarryP Posted September 10, 2020 Share Posted September 10, 2020 (edited) 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. double-arrowhead-trick.afdesign Edited September 10, 2020 by GarryP Added example document. Quote Link to comment Share on other sites More sharing options...
Pšenda Posted September 10, 2020 Share Posted September 10, 2020 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: 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. Aammppaa 1 Quote 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 More sharing options...
R C-R Posted September 10, 2020 Share Posted September 10, 2020 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? Aammppaa 1 Quote 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 All 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7 Link to comment Share on other sites More sharing options...
Taliesin Beynon Posted September 10, 2020 Author Share Posted September 10, 2020 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! Quote Link to comment Share on other sites More sharing options...
Taliesin Beynon Posted September 10, 2020 Author Share Posted September 10, 2020 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. Quote Link to comment Share on other sites More sharing options...
Taliesin Beynon Posted September 10, 2020 Author Share Posted September 10, 2020 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. 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. Quote Link to comment Share on other sites More sharing options...
R C-R Posted September 10, 2020 Share Posted September 10, 2020 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? Quote 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 All 3 V2 apps for iPad; 6th Generation iPad 32 GB; Apple Pencil; iPadOS 15.7 Link to comment Share on other sites More sharing options...
Recommended Posts
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.