public void SaveCanvasAsImage(string imageFileName) { double newWidth = this._mainImage.Source.Width; double newHeight = this._mainImage.Source.Height; double widthAspectRatio = newWidth / this._mainCanvas.ActualWidth; double heightAspectRatio = newHeight / this._mainCanvas.ActualHeight; PhotoCanvas saveCanvas = new PhotoCanvas(this._border, newWidth, newHeight); saveCanvas.ChangeMainImage(this._mainImage.Source, false); foreach (InsetImage insetImage in this._imageDictionary.Values) { double newX = DynamicCanvas.GetLeft(insetImage.ImageCanvas) * widthAspectRatio; double newY = DynamicCanvas.GetTop(insetImage.ImageCanvas) * heightAspectRatio; double newImageWidth = insetImage.ImageCanvas.Width * widthAspectRatio; saveCanvas.AddInsetPhoto(insetImage.DisplayImage.Source, newImageWidth, this._border, newX, newY); } ImageUtils.SaveDynamicCanvas(saveCanvas._mainCanvas, 96, imageFileName); }
private void Update() { if (cam == null && Input.GetMouseButtonDown(0)) { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo)) { paintObject = hitInfo.transform.GetComponent <DynamicCanvas>(); if (paintObject != null) { uv = hitInfo.textureCoord; var camObj = Instantiate(camPref, hitInfo.point, Quaternion.LookRotation(hitInfo.normal), hitInfo.transform) as GameObject; cam = camObj.GetComponent <Camera>(); cam.targetTexture = rt; camObj.SetActive(true); } } } else if (cam != null) { var buf = RenderTexture.GetTemporary(brush.BrushTexture.width, brush.BrushTexture.height); Es.Effective.GrabArea.Clip(brush.BrushTexture, brush.Scale, rt, Vector3.one * 0.5f, Es.Effective.GrabArea.GrabTextureWrapMode.Clip, buf); Es.Effective.ReverseUV.Horizontal(buf, buf); var brushBuf = brush.BrushTexture; brush.BrushTexture = buf; if (paintObject != null) { paintObject.PaintUVDirect(brush, uv); } RenderTexture.ReleaseTemporary(buf); brush.BrushTexture = brushBuf; } }
public void Start() { mat = GetComponent <MeshRenderer>().sharedMaterial; canvas = GetComponent <DynamicCanvas>(); tex = canvas.GetMainTexture(mat.name); rtex = canvas.GetPaintMainTexture(mat.name); }
private void Start() { material = GetComponent <Renderer>().sharedMaterial; materialName = material.name; canvas = GetComponent <DynamicCanvas>(); canvas.OnInitializedAfter = Init; }
private void Init(DynamicCanvas canvas) { var heightPaint = canvas.GetPaintHeightTexture(materialName); if (heightPaint != null) { InitHeightMap(heightPaint); } }
private void DragStarted() { _isDragging = true; var ui = (UIElement)MyVisualTreeHelper.GetParent <ContentPresenter>(_draggedDeviceVisual); _dragStartLeft = DynamicCanvas.GetLeft(ui); _dragStartTop = DynamicCanvas.GetTop(ui); SelectElement(_draggedDeviceVisual); _overlayElement.IsDragging = true; }
private void Init(DynamicCanvas canvas) { material = GetComponent <MeshRenderer>().sharedMaterial; defaultMainTexture = canvas.GetMainTexture(material.name); paintMainTexture = canvas.GetPaintMainTexture(material.name); defaultNormalMap = canvas.GetNormalTexture(material.name); paintNormalMap = canvas.GetPaintNormalTexture(material.name); defaultHeightMap = canvas.GetHeightTexture(material.name); paintHeightMap = canvas.GetPaintHeightTexture(material.name); StartCoroutine(TextureLerp()); }
internal static void SetTop(UIElement element, PanelType panelType, double top) { if (panelType == PanelType.Canvas) { Canvas.SetTop(element, top); } else { DynamicCanvas.SetTop(element, top); } }
internal static void SetLeft(UIElement element, PanelType panelType, double left) { if (panelType == PanelType.Canvas) { Canvas.SetLeft(element, left); } else { DynamicCanvas.SetLeft(element, left); } }
internal static double GetTop(UIElement element, PanelType panelType) { if (panelType == PanelType.Canvas) { return(Canvas.GetTop(element)); } else { return(DynamicCanvas.GetTop(element)); } }
private void CreateMainImage() { _mainImage = new Image(); _mainImage.Name = "ImageHolder"; _mainImage.Stretch = System.Windows.Media.Stretch.Fill; _mainCanvas.Children.Add(_mainImage); DynamicCanvas.SetTop(_mainImage, _border); DynamicCanvas.SetLeft(_mainImage, _border); DynamicCanvas.SetZIndex(_mainImage, -500); }
private DynamicCanvas CreatePhotoCanvas(Uri imageUri) { _mainCanvas = new DynamicCanvas(); _mainCanvas.Name = "ImageCanvas"; _mainCanvas.Background = Brushes.White; if (imageUri != null) { SetMainImage(ImageUtils.GetImageFromUri(imageUri), false); } return(_mainCanvas); }
public static void SaveDynamicCanvas(DynamicCanvas canvas, int dpi, string filename) { Size size = new Size(canvas.Width, canvas.Height); canvas.Measure(size); canvas.Arrange(new Rect(size)); var rtb = new RenderTargetBitmap( (int)canvas.Width, //width (int)canvas.Height, //height dpi, //dpi x dpi, //dpi y PixelFormats.Pbgra32 // pixelformat ); rtb.Render(canvas); SaveRTBAsPNG(rtb, filename); }
public bool AddInsetPhoto(Uri imageUri) { InsetImage insetImage = new InsetImage(imageUri); Canvas imageCanvas = insetImage.ImageCanvas; if (imageCanvas != null) { _imageDictionary.Add(imageCanvas.Name, insetImage); _mainCanvas.Children.Add(imageCanvas); DynamicCanvas.SetLeft(imageCanvas, DefaultLeft); DynamicCanvas.SetTop(imageCanvas, DefaultTop); AddInsetImageUndo(imageCanvas); return(true); } return(false); }
private void DragFinished(bool cancelled) { Mouse.Capture(null); lock (_updaterLock) { if (_isDragging) { if (cancelled == false) { var ui = (UIElement)MyVisualTreeHelper.GetParent <ContentPresenter>(_draggedDeviceVisual); DynamicCanvas.SetTop(ui, _dragStartTop + _overlayElement.TopOffset); DynamicCanvas.SetLeft(ui, _dragStartLeft + _overlayElement.LeftOffset); } SelectElement(_draggedDeviceVisual); _overlayElement.IsDragging = false; } _isDragging = false; _isMouseDown = false; } }
public bool AddInsetPhoto(ImageSource imageSource, double imageWidth, double borderWidth, double imageX, double imageY) { InsetImage insetImage = new InsetImage(imageWidth, imageSource, borderWidth); Canvas imageCanvas = insetImage.ImageCanvas; if (imageCanvas != null) { _imageDictionary.Add(imageCanvas.Name, insetImage); _mainCanvas.Children.Add(imageCanvas); DynamicCanvas.SetLeft(imageCanvas, imageX); DynamicCanvas.SetTop(imageCanvas, imageY); AddInsetImageUndo(imageCanvas); return(true); } return(false); }
private void Awake() { canvas = GetComponent <DynamicCanvas>(); canvas.OnInitializedAfter = Init; }