From: gdkhd812 Date: Sun, 3 Nov 2013 11:30:22 +0000 (+0900) Subject: 印刷プレビューに失敗するバグを修正した X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c6bbfd86f7990bb9d43350f3cc865c681974287a;p=fooeditengine%2FFooEditEngine.git 印刷プレビューに失敗するバグを修正した --- diff --git a/Metro/FooEditEngine/Direct2D/D2DRender.cs b/Metro/FooEditEngine/Direct2D/D2DRender.cs index c1f7684..960bb8a 100644 --- a/Metro/FooEditEngine/Direct2D/D2DRender.cs +++ b/Metro/FooEditEngine/Direct2D/D2DRender.cs @@ -118,8 +118,8 @@ namespace FooEditEngine void GetDpiHandler(out float dpix, out float dpiy) { - dpix = (int)DisplayInformation.GetForCurrentView().LogicalDpi; - dpiy = (int)DisplayInformation.GetForCurrentView().LogicalDpi; + dpix = DisplayInformation.GetForCurrentView().LogicalDpi; + dpiy = DisplayInformation.GetForCurrentView().LogicalDpi; } public bool Resize(Windows.UI.Xaml.Shapes.Rectangle rect, double width, double height) diff --git a/Metro/FooEditEngine/Print/D2DPrintPreviewRender.cs b/Metro/FooEditEngine/Print/D2DPrintPreviewRender.cs index 54dcccf..46dc114 100644 --- a/Metro/FooEditEngine/Print/D2DPrintPreviewRender.cs +++ b/Metro/FooEditEngine/Print/D2DPrintPreviewRender.cs @@ -34,11 +34,13 @@ namespace FooEditEngine D2D.DeviceContext D2DContext; D2D.Bitmap1 Bitmap; Size Size; + float dpi; - public D2DPrintPreviewRender(string fontName, double fontSize, Size size) + public D2DPrintPreviewRender(string fontName, double fontSize, Size size,float dpi) : base() { this.Size = size; + this.dpi = dpi; base.ConstructRender = this.ConstructRenderHandler; base.ConstrctedResource = this.ConstructedResourceHandler; @@ -51,8 +53,8 @@ namespace FooEditEngine new void GetDpi(out float dpix, out float dpiy) { - dpix = (int)DisplayInformation.GetForCurrentView().LogicalDpi; - dpiy = (int)DisplayInformation.GetForCurrentView().LogicalDpi; + dpix = this.dpi; + dpiy = this.dpi; } public override void BeginDraw() @@ -73,10 +75,7 @@ namespace FooEditEngine public void EndDraw(IPrintPreviewDxgiPackageTarget target,uint page) { base.EndDraw(); - float dpix, dpiy; - this.GetDpi(out dpix, out dpiy); - - target.DrawPage(page, this.Surface.NativePointer, (float)dpix, (float)dpiy); + target.DrawPage(page, this.Surface.NativePointer, this.dpi, this.dpi); } public void SetScale(float scale) @@ -86,12 +85,9 @@ namespace FooEditEngine D2D.RenderTarget ConstructRenderHandler(D2D.Factory1 factory, D2D.RenderTargetProperties prop, double width, double height) { - float dpix, dpiy; - this.GetDpi(out dpix, out dpiy); - D3D11.Texture2DDescription desc = new D3D11.Texture2DDescription(); - desc.Width = (int)(width * dpix / 96); - desc.Height = (int)(height * dpix / 96); + desc.Width = (int)(width * this.dpi / 96); + desc.Height = (int)(height * this.dpi / 96); desc.Format = DXGI.Format.B8G8R8A8_UNorm; desc.BindFlags = D3D11.BindFlags.RenderTarget | D3D11.BindFlags.ShaderResource; desc.ArraySize = 1; @@ -107,7 +103,7 @@ namespace FooEditEngine this.D2DContext = new D2D.DeviceContext(this.D2DDevice, D2D.DeviceContextOptions.None); - this.D2DContext.DotsPerInch = new Size2F(dpix, dpix); + this.D2DContext.DotsPerInch = new Size2F(this.dpi, this.dpi); D2D.BitmapProperties1 bmpProp = new D2D.BitmapProperties1(); bmpProp.BitmapOptions = D2D.BitmapOptions.Target | D2D.BitmapOptions.CannotDraw; diff --git a/Metro/FooEditEngine/Print/DocumentSource.cs b/Metro/FooEditEngine/Print/DocumentSource.cs index 5072ba9..b0b7a1e 100644 --- a/Metro/FooEditEngine/Print/DocumentSource.cs +++ b/Metro/FooEditEngine/Print/DocumentSource.cs @@ -9,6 +9,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ using System; +using Windows.Graphics.Display; using Windows.Graphics.Printing; using System.Runtime.InteropServices; using Windows.UI; @@ -65,6 +66,7 @@ namespace FooEditEngine int lineBreakCharCount, tabCount; bool drawLineNumber, urlMark; IHilighter hilighter; + float displayDpi; public PrintableViewFactory(FooTextBox textbox) { this.foreground = textbox.Foreground; @@ -82,6 +84,7 @@ namespace FooEditEngine this.drawLineNumber = textbox.DrawLineNumber; this.urlMark = textbox.MarkURL; this.hilighter = textbox.Hilighter; + this.displayDpi = DisplayInformation.GetForCurrentView().LogicalDpi; } public D2DRenderBase CreateRender(PrintPageDescription pagedesc, IPrintDocumentPackageTarget docPackageTarget) { @@ -100,7 +103,7 @@ namespace FooEditEngine { D2DPrintPreviewRender render; Size size = new Size(pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height); - render = new D2DPrintPreviewRender(this.fontName, this.fontSize, size); + render = new D2DPrintPreviewRender(this.fontName, this.fontSize, size, this.displayDpi); render.Foreground = this.foreground; render.Comment = this.comment; render.Keyword1 = this.keyword1;