-
-
Notifications
You must be signed in to change notification settings - Fork 93
Images
This entry describes in detail how Myra deals with images.
IBrush represents something that can draw itself in the specified rectangle with the specified color:
public interface IBrush
{
void Draw(SpriteBatch batch, Rectangle dest, Color color);
}
Many widgets properties such as Widget.Background or Menu.SelectionBackground have IBrush type. The most simple implementation of IBrush is SolidBrush. Thus following code sets SolidBrush as widget.Background:
widget.Background = new SolidBrush(Color.Red); // SolidBrush from Color
widget.Background = new SolidBrush("#808000FF"); // SolidBrush from RGBA string
widget.Background = new SolidBrush("#FFA500"); // SolidBrush from RGB string
IImage extends IBrush with Size property:
Myra provides 3 IRenderable implementation: TextureRegion, NinePatchRegion and ColoredRegion.
TextureRegion describes rectangle in the texture. TextureRegion implements IRenderable. Therefore following code will work:
// 'texture' is object of type Texture2D
widget.Background = new TextureRegion(texture, new Rectangle(10, 10, 50, 50));
Also following:
// If 2nd parameter is omitted, then TextureRegion covers the whole texture
image.Renderable = new TextureRegion(texture);
NinePatchRegion represents region with unstrechable border and strechable center. It could be used following way:
widget.Background = new NinePatchRegion(texture, new Rectangle(10, 10, 50, 50),
new PaddingInfo {Left = 2, Right = 2,
Top = 2, Bottom = 2});
ColoredRegion represents TextureRegion and Color. It could be used when one needs to draw single TextureRegion in multiple colors. I.e. following code will work:
widget.Background = new ColoredRegion(textureRegion, Color.Blue);
And following
image.Renderable = new ColoredRegion(ninePatchRegion, Color.Red);
Myra default assets contain white TextureRegion. It could be used if one needs to make solid renderable filled with specified color. I.e. following code will make widget's background violet:
widget.Background = new ColoredRegion(DefaultAssets.WhiteRegion, Color.Violet);
TextureRegionAtlas is collection of texture regions(each could be nine patch) accessible by string key.
It could be serialized to xml with following look: default_ui_skin_atlas.xml
Following code loads it from xml:
// 'xml' is string
TextureRegionAtlas spriteSheet = TextureRegionAtlas.FromXml(xml, UIBitmap);
And following code saves it to xml:
string xml = spriteSheet.ToXml();