What is the purpose of StrokeForm?

Symbol SystemStrokeForm is present already in Mathematica version 8 (but not in version 5.2).

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

FrameStyle /. ChartingResolvePlotTheme["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:

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

• 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] Feb 2, 2022 at 15:06

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[]}]}


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


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