6
$\begingroup$

Symbol System`StrokeForm is present already in Mathematica version 8 (but not in version 5.2).

Currently, it is used in built-in themes, for example:

FrameStyle /. Charting`ResolvePlotTheme["Business", Plot]
{{StrokeForm[Opacity[0]], StrokeForm[Opacity[0]]}, {Automatic, None}}

More importantly, when we use the Drawing Tools palette and change the color and/or opacity using the color setter from the "Stroke" section, in the resulting expression corresponding Hue and Opacity directives are wrapped by StrokeForm (but not Thickness, Dashing, CapForm and JoinForm which also can be set using the tools from this section). Here is an example of graphics I created using purely the Drawing Tools palette of Mathematica 8.0.4:

Graphics[{Thickness[0.000363078054770101], Dashing[{0, Small, Small, Small}], 
  CapForm["Round"], JoinForm[{"Miter", 4.6000000000000005}], 
  StrokeForm[{Hue[0.31666666666666665, 0.9459459459459459, 1.], Opacity[0.74]}], 
  EdgeForm[{GrayLevel[0], Opacity[1]}], EdgeForm[None], 
  Arrow[{{-0.06093314763231206, 0.3726369545032495}, {0.5193825441039923, 
   -0.20767873723305486}}]}, ImagePadding -> {{0., 1.}, {1., 0.}}, 
 ImageSize -> {374., Automatic}, PlotRange -> {{-1.0416666666666667, 
  1.0416666666666667}, {-1.04, 1.04}}, PlotRangePadding -> Automatic]

As one can see, it contains StrokeForm wrapped around Hue and Opacity directives.

At the same time, this symbol remains undocumented even in version 13:

screesnhot

What is the purpose of this symbol? Are there any benefits to using it?

$\endgroup$
1
  • 3
    $\begingroup$ I've never seen this symbol before but just playing around with it you can get an idea what it does. Compare Plot[x, {x, -3, 3}, FrameStyle -> StrokeForm[Blue], Frame -> True] with Plot[x, {x, -3, 3}, FrameStyle -> Blue, Frame -> True] $\endgroup$
    – Jason B.
    Feb 2, 2022 at 15:06

1 Answer 1

6
$\begingroup$

Answering the question myself, I would say that StrokeForm is one of specialized compound-type graphics directives: EdgeForm, FaceForm, StrokeForm. They are specialized because each affects rendering only a subset of graphics objects. And they are compound-type because each can contain other graphics directives.

Specifically StrokeForm affects rendering of stroke-like objects: Line, Arrow, BSplineCurve, BezierCurve, edges of Polygon-like objects, axes and frames of Graphics, etc. But it doesn't affect Point, Tube, etc.

Examples:

{Graphics[{StrokeForm[{Red, Thickness[1/2]}], Rectangle[]}],
 Graphics[{EdgeForm[{Red, Thickness[1/2]}], Rectangle[]}]}

output

Graphics3D[{StrokeForm[{Red, Thick}], Polygon[{{1, 0, 0}, {1, 1, 1}, {0, 0, 1}}]}]

output

Graphics3D[{StrokeForm[Dashed], Cuboid[]}]

output

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.