مشاكل مع تقديم النص كما الصور النقطية باستخدام WPF

StackOverflow https://stackoverflow.com/questions/1614397

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا تطوير تطبيق باستخدام WPF لتقديم المحتوى، بما في ذلك النصوص والصور من برنامج الأغذية العالمي إلى ملفات JPG بشكل حيوي. أنا حاليا باستخدام فئة RenderTargetBitmap للقيام بهذه المهمة. كل شيء يعمل كما هو متوقع ولكن نوعية الخطوط المقدمة رهيب. أنا أفهم أن RenderTargetBitmap لا يستخدم اضحة النوع ولكن الحواف الرمادي، الذي هو نوع من blury مع الخطوط الصغيرة. ولكن أنا باستخدام خطوط كبيرة، أكبر من 30 نقطة، وكانت النتائج غير مقبول على الإطلاق. هل هناك نوع من الحل لهذه المشكلة؟

و[تحديث]

ويتم سرد الرمز الذي أستخدمه أدناه. كما هو متوقع يطلق عليه على كل حال التقديم للCompositionTarget.

void CompositionTarget_Rendering(object sender, EventArgs e)
        {
            prefix = "";
            if (counter < 10)
            {
                prefix = "000";
            }
            else if (counter < 100)
            {
                prefix = "00";
            }
            else if (counter < 1000)
            {
                prefix = "0";
            }

            Size size = new Size(MainCanvas.Width, MainCanvas.Height);
            MainCanvas.Measure(size);
            MainCanvas.Arrange(new Rect(size));


            RenderTargetBitmap bmp = new RenderTargetBitmap(imgWidth, imgHeight, 96d, 96d, PixelFormats.Default);
            bmp.Render(MainCanvas);

            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.QualityLevel = 90;
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            string file = basePath + prefix + counter.ToString() + "_testpic.jpg";
            using (Stream stm = File.Create(file))
            {
                encoder.Save(stm);
            }
            counter++;
        }

وفيما يلي بعض الأمثلة على الصور الناتجة: بديل النص http://www.randomnoise.org/temp/testpic_v1.jpg بديل النص http://www.randomnoise.org/temp/testpic_v2.jpg

وشكرا مقدما.

هل كانت مفيدة؟

المحلول 2

وطيب، وأخيرا وجدت الحل. كنت غوستافو على الطريق الصحيح. والمشكلة هي أن الحاوية الرئيسية التي كنت أحاول أن تجعل كما نقطية كان يجري مشوهة بالحاويات الأم. وكان الحل لإضافة الحاوية الرئيسية لقماش، وليس لديها محرك التخطيط الذي يشوه أبنائها. ما زلت بحاجة للقيام ببعض أكثر تجريب لكنها تبدو واعدة جدا. يبدو RenderTargetBitmap لا يحب الخطوط مشوهة على الإطلاق.

نصائح أخرى

وجرب هذا:

int height = (int)border.ActualHeight;
int width = (int)border.ActualWidth;
RenderTargetBitmap bmp = new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
bmp.Render(border);

والحدود يجري ما كنت تحاول انقاذ ما نقطية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top