Как сделать строку на изображении в Windows phone Mango? - PullRequest
1 голос
/ 11 октября 2011

Я пытаюсь визуализировать строку поверх изображения, выбранного пользователем с помощью задачи Photochooser.Я видел различные ответы на подобный вопрос, но ни один из ответов не прибил его.

Это то, что я придумал -

void photochoosertask_Completed(object sender, PhotoResult e)
        {
            if (e.TaskResult == TaskResult.OK)
            {
System.Windows.Media.Imaging.BitmapImage bmp = new System.Windows.Media.Imaging.BitmapImage();
                bmp.SetSource(e.ChosenPhoto);
                image1.Source = bmp;



                string steamer = "SO!";
                System.Windows.Media.Imaging.WriteableBitmap bmps = new System.Windows.Media.Imaging.WriteableBitmap(bmp);
                RenderString(bmps, steamer);




            }



        }
        private void RenderString(System.Windows.Media.Imaging.WriteableBitmap bitmap, string steamer)
        {


            textBlock1.Text = steamer;



            bitmap.Render(textBlock1 , null);

            bitmap.Invalidate();

        }
    }

Однако код не работает.Скорее всего, я делаю большую ошибку.Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

0 голосов
/ 17 октября 2011

Я только что понял это.Думаю, я должен опубликовать код решения здесь, может кто-нибудь поможет - когда-нибудь :) 1001

//setup a writeable bitmap with required dimensions
System.Windows.Media.Imaging.WriteableBitmap wbmps = new System.Windows.Media.Imaging.WriteableBitmap(x,y);
//set up a transform, we'll use ScaleTransform and we'll keep things simple here, 1x on both the axis 
 ScaleTransform transform = new System.Windows.Media.ScaleTransform();
 transform.ScaleX=1;
 transform.ScaleY=1; 
//now we need to render the image on the writeablebitmap and follow it up by rendering a //string
wbmps.Render(imageelement,transform);
//Now render the string which is equivalent to TextBlock.Text
wbmps.Render(texblock,transform);
//Finally - redraw the writeablebitmap to complete the rendering
wbmps.Invalidate();
0 голосов
/ 12 октября 2011

Согласно документации :

Если предоставляется пустое преобразование [т.е. null, который вы передаете в качестве второго параметра], биты, представляющие элементотображаются с тем же смещением, как если бы они были размещены внутри своего родителя.

Так что, если я понимаю, что происходит правильно (и, вероятно, нет), ваш элемент textBlock1 отображается стакое же смещение, как у вашей родительской формы.Так что может быть так, что textBlock1 находится так далеко внизу и слева, что не отображается в вашем растровом изображении для записи.

Кстати, я не знаком с WriteableBitmap, но что вывыполнение (помещение текста в элемент пользовательского интерфейса, а затем рендеринг этого элемента в растровое изображение) кажется странным способом добавления текста в растровое изображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...