В нормальном C# легко потянуть к битовому массиву с помощью Grpahic. DrawString () метод. Silverlight, кажется, покончила с Растровыми объектами, и Графика больше не доступна также. Так... Как я предназначен для управления/создавания битовым массивом при использовании Silverlight? Если это помогает, я использую Silverlight 3.
Позвольте мне сказать Вам, что я делаю. Мне дают шаблон, в основном предварительно представленное изображение. Пользователь затем может выбрать из повторных изображений и ввести желаемый текст. Я затем представляю его к изображению, корректируя размер и т.д.... в границах и центрируя его в предопределенной области изображения. Если я могу вычислить размер (как в методе MeasureString) и затем потянуть строку (как в Графике. Метод DrawString), который был бы прекрасен. Реальным вопросом, неважно, почему я хочу смочь сделать это, является банка это быть сделанным?
Вопрос: зачем вам это нужно? Почему бы просто не использовать TextBlock ?
Если вы пытаетесь динамически сгенерировать изображение, используйте стандартные элементы управления Silverlight / WPF (включая TextBlock) и визуализируйте их в WritableBitmap .
Редактировать:
Хорошо, вы обновили и расширили, что дает мне больше возможностей для продолжения. К сожалению, вам не понравится ответ. Во-первых, имейте в виду, что Silverlight и WPF в целом являются векторными и предназначены для использования как таковые. Хотя Canvas позволяет выполнять манипуляции с псевдопикселями, вы не можете быть почти такими же точными, как GDI старой школы. Это фактор вашей среды. Если вам абсолютно необходимо измерять объекты так, как вы хотите их измерить, я предлагаю вам создать свои изображения на удаленном сервере и передать их в приложение Silverlight.
Вы можете рассчитать размер текста, отображаемого на экране с помощью TextBlock, с помощью свойств ActualWidth и ActualHeight. Но это работает только с уже визуализированным элементом управления. Что-то вроде MeasureString просто недоступно в Silverlight. Основываясь на вашем описании вашего приложения, некоторое взаимодействие с пользователем может привести к тому, что вы хотите. Пользователь выбирает изображение, вводит текст, и ему показывается предварительный просмотр. Затем пользователь может настраивать ширину и высоту различных текстовых областей до тех пор, пока не будет удовлетворен, после чего вы можете сделать снимок, используя метод рендеринга, который мне понравился выше.
Следующее может работать, это немного туманно, потому что я сам еще не пробовал.
Ищете объект WritableBitmap
.
Вы создаете визуальное дерево, например создаете себе сетку
или холст
(вы не добавляете это в пользовательский интерфейс). Добавьте к нему выбранное изображение и текстовый блок, расположенный и размер которого вы предпочитаете.
Создайте новый WritableBitmap
либо определенного размера, либо используя выбранное изображение для его инициализации.
Используйте метод WritableBitmap
Render
, передав ему указанную выше корневую сетку
или Canvas
.
Теперь у вас есть растровое изображение, которое вы можете использовать, чтобы делать все, что вам нужно, для чего в первую очередь требовались все эти прыжки через обруч.