You're right about flexibility, but you're not regarding usability, and I'll explain why. If you don't know the size of the skin (e.g. have DynamicWindowSize=1 in the [Rainmeter] section) and want to draw a beveled background, you'll have a serious problem knowing how big the shape should be, because you're only able to find it out AFTER every other meter in the skin has been drawn via the built in config dimensions variables. On the other hand, the background must be drawn BEFORE any other meter so as to not cover them and potentially rendering them invisible (if the background is solid). In other words, if you go via the classic method and place the background shape before the other meters, its size will only be updated properly after the first update, after all the meters are updated and the skin dimensions are known.Brian wrote: ↑February 15th, 2022, 5:52 am Rainmeter manually draws them. There are 8 lines to draw (2 for each edge), and their position depends on whether they are "skin" bevels, or "meter" bevels. Skin bevels draw "inside" or within the bounds of the skin. Meter bevels draw outside of the meter.
While I am sure adding a proper "width" to this is possible, I am not sure we are going to explore this too much, given all the manually drawing.
IMO, I think using a shape meter gives the most flexibility.
-Brian
In my suite, I solved this conundrum by first drawing some invisibly colored meters (used as templates for the original ones) in order to be able to find out the skin dimensions, then drew the background using the previously acquired info, then drew the original meters. This technique, while a sort of a hack (or horribly complicated as jsmorley would say) does produce the desired effect, but is useless if you don't know beforehand how your skin would look like and how big it "should" be. So, you see, using the bevel option here is not about flexibility (which I agree that Shape meters offer), but about not having to resort to all sorts of intricated methods to achieve the desired effect of drawing a (dynamic or static, doesn't matter) bevel around an unknown sized skin. The latter is possible using the bevel option, but the bevel's thickness is not adjustable and looks a bit rudimentary on some resolutions.
P.S. I believe the above is true to some extent on the meter bevels as well.
P.S.S. Oh, and I also manually draw the variable width bevel, since I can't achieve it via an option, LOL. This is how I do it:
Code: Select all
[MT_Background]
Meter=Shape
Shape=Rectangle 0,0,#SkinWidth#,#SkinHeight# | StrokeWidth 0 | Fill LinearGradient SkinGradient
SkinGradient=#SkinGradientAngle# | #SkinSolidColor# ; 0.0 | #SkinSolidColor2# ; 1.0
Shape2=Path TopLeftBevel | StrokeWidth 0 | Stroke Color (255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),(255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),(255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),255 | Fill Color (255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),(255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),(255-((#SkinBevelType#-(#SkinBevelType#%2))/2)*255),255
TopLeftBevel=0,0 | LineTo #SkinWidth#,0 | LineTo #SkinWidth#,#SkinBevelWidth# | LineTo #SkinBevelWidth#,#SkinBevelWidth# | LineTo #SkinBevelWidth#,#SkinHeight# | LineTo 0,#SkinHeight# | SetNoStroke 1 | ClosePath 1
Shape3=Path BottomRightBevel | StrokeWidth 0 | Stroke Color (255-(#SkinBevelType#%2)*255),(255-(#SkinBevelType#%2)*255),(255-(#SkinBevelType#%2)*255),255 | Fill Color (255-(#SkinBevelType#%2)*255),(255-(#SkinBevelType#%2)*255),(255-(#SkinBevelType#%2)*255),255
BottomRightBevel=0,#SkinHeight# | LineTo #SkinWidth#,#SkinHeight# | LineTo #SkinWidth#,0 | LineTo (#SkinWidth#-#SkinBevelWidth#),#SkinBevelWidth# | LineTo (#SkinWidth#-#SkinBevelWidth#),(#SkinHeight#-#SkinBevelWidth#) | LineTo #SkinBevelWidth#,(#SkinHeight#-#SkinBevelWidth#) | SetNoStroke 1 | ClosePath 1
UpdateDivider=-1
DynamicVariables=1