protected override void OnPaint(Alt.GUI.PaintEventArgs e) { Debug.Log("onpaint"); Alt.Sketch.Graphics graphics = e.Graphics; if (!DoubleBuffered) { graphics.FillRectangle(Alt.Sketch.Color.FromArgb((graphics is SoftwareGraphics) ? 128 : 192, Alt.Sketch.Color.DodgerBlue), ClientRectangle); } else { graphics.Clear(Alt.Sketch.Color.FromArgb((graphics is SoftwareGraphics) ? 128 : 192, Alt.Sketch.Color.DodgerBlue)); } int w = ClientWidth; int h = ClientHeight; m_Scale = viewZoom * System.Math.Min(w, h) / 23; m_CenterX = w / 2 + m_OffsetX; m_CenterY = h * 0.83 + m_OffsetY; m_DebugDraw.SetViewTransform(m_CenterX, m_CenterY, m_Scale); //Paint base.OnPaint(e); }
protected override void OnPaint(GUI.PaintEventArgs e) { Alt.Sketch.Graphics graphics = e.Graphics; if (!DoubleBuffered) { graphics.FillRectangle(Alt.Sketch.Color.FromArgb((graphics is SoftwareGraphics) ? 128 : 192, Alt.Sketch.Color.DodgerBlue), ClientRectangle); } else { graphics.Clear(Alt.Sketch.Color.FromArgb((graphics is SoftwareGraphics) ? 128 : 192, Alt.Sketch.Color.DodgerBlue)); } //Paint base.OnPaint(e); }
internal bool DoRenderIfNeed(Camera camera, Renderer renderer) { SizeI size; if (!NeedsUpdate || Unity_RenderManager.Instance == null || (size = Size).IsEmpty) { return(false); } NeedsUpdate = false; m_LastRenderTime = Alt.IntervalTimer.Ticks; m_FPSCounter.Tick(); if (RenderType == Alt.Sketch.Rendering.RenderType.Software) { if (!(m_Texture is Texture2D)) { KillTextures(); } if (m_Texture != null && (m_Texture.width != size.Width || m_Texture.height != size.Height)) { m_Texture = null; } if (m_Texture == null) { m_Texture = new Texture2D( size.Width, size.Height, Unity_RenderManager.ToTextureFormat(PixelFormat.Format32bppArgb), false); m_Texture.filterMode = FilterMode.Point; RefreshMaterial(); } Bitmap backBuffer = SoftwareBackBuffer; Alt.Sketch.Graphics graphics = Alt.Sketch.Graphics.FromImage(backBuffer); //graphics.Clear(Alt.Sketch.Color.FromArgb(0, 128, 128, 128)); graphics.Clear(Alt.Sketch.Color.FromArgb(0, 0, 0, 0)); DoPaintInternal(new Alt.GUI.PaintEventArgs(graphics, new Alt.Sketch.Rect(0, 0, size))); Unity_RenderManager.SetTextureData(m_Texture as Texture2D, backBuffer, backBuffer.PixelRectangle, true); } else { if (m_RenderTexture != null && (m_RenderTexture.width != size.Width || m_RenderTexture.height != size.Height)) { KillTextures(); } if (m_RenderTexture == null) { m_RenderTexture = new RenderTexture( size.Width, size.Height, 0, Unity_RenderManager.ToRenderTextureFormat(PixelFormat.Format32bppArgb)); m_RenderTexture.filterMode = FilterMode.Point; m_Texture = m_RenderTexture; RefreshMaterial(); } if (m_RenderTexture != null) { RenderTexture oldRenderTexture = RenderTexture.active; RenderTexture.active = m_RenderTexture; try { GL.Clear(true, true, Unity_RenderManager.ToColor(Alt.Sketch.Color.Empty)); if (m_Renderer == null) { m_Renderer = new Unity_Renderer(Unity_RenderManager.Instance); m_Renderer.DefaultSmoothingMode = Alt.Sketch.SmoothingMode.None; } m_Renderer.BeginRender(camera, renderer, size.Width, size.Height, true); { Alt.Sketch.Graphics graphics = Alt.Sketch.Graphics.FromRenderer(m_Renderer); if (graphics != null) { DoPaintInternal(new Alt.GUI.PaintEventArgs(graphics, new Alt.Sketch.Rect(0, 0, size))); } } m_Renderer.EndRender(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { RenderTexture.active = oldRenderTexture; } } } return(true); }
/* * Render the given string using the given font. Transfer the image * to a surface of power-of-2 size large enough to fit the string. * Return an OpenGL texture object. */ // Image public static int make_image_from_font( ref int w, ref int h, string text, Alt.Sketch.Font font) { int o = 0; /* Render the text. */ if (!string.IsNullOrEmpty(text)) { Alt.Sketch.SizeI size = gui.gui_measure(text, font); Alt.Sketch.Bitmap bitmap = new Alt.Sketch.Bitmap(size, Alt.Sketch.PixelFormat.Format32bppArgb); using (Alt.Sketch.Graphics graphics = Alt.Sketch.Graphics.FromImage(bitmap)) { graphics.Clear(Alt.Sketch.Color.Empty); graphics.DrawString(text, font, Alt.Sketch.Brushes.White, Alt.Sketch.Point.Zero); } { w = bitmap.PixelWidth; h = bitmap.PixelHeight; int trw = 0; bool f = false; // left for (int x = 0; x < w; x++) { for (int y = 0; y < h; y++) { if (bitmap.GetPixel(x, y).A != 0) { f = true; break; } } if (f) { break; } trw++; } // right f = false; for (int x = w - 1; x >= 0; x--) { for (int y = 0; y < h; y++) { if (bitmap.GetPixel(x, y).A != 0) { f = true; break; } } if (f) { break; } trw++; } // Pad the text to power-of-two Alt.Sketch.BitmapData bdata = bitmap.LockBits(Alt.Sketch.ImageLockMode.ReadOnly); int w2 = 0; int h2 = 0; byte[] p = image_next2(bdata.Scan0, bdata.PixelWidth, bdata.PixelHeight, bdata.ByteDepth, trw, ref w2, ref h2); bitmap.UnlockBits(bdata); /* Saturate the color channels. Modulate ONLY in alpha. */ Image.image_white(p, w2, h2, bitmap.ByteDepth); /* Create the OpenGL texture object. */ o = Image.make_texture(p, w2, h2, bitmap.ByteDepth); } } else { /* Empty string. */ //if (w) * w = 0; //if (h) * h = 0; //if (W) *W = 0; //if (H) *H = 0; } return(o); }