public override void Draw(UISpriteBatch batch)
{
if (Width == 0 || Height == 0 || !DoRedraw) return;
DoRedraw = false;
batch = Batch;
batch.UIBegin(BlendState.AlphaBlend, SpriteSortMode.Deferred);
Promise<Texture2D> bufferTexture = null;
using (batch.WithBuffer(ref bufferTexture))
{
lock (Children)
{
foreach (var child in Children)
{
child.PreDraw(batch);
}
foreach (var child in Children)
{
child.Draw(batch);
}
}
batch.Pause();
batch.Resume();
}
var tex = bufferTexture.Get();
batch.End();
tex.GetData(RawImage, 0, (GameFacade.DirectX) ? RawImage.Length : RawImage.Length/4);
for (int i=0; i<RawImage.Length; i+=4)
{
var swap = RawImage[i];
RawImage[i] = RawImage[i + 2];
RawImage[i + 2] = swap;
}
if (OnFrame != null) OnFrame();
//batch.Draw(tex, Vector2.Zero, _BlendColor);
}