Я работаю над проектом, в основе которого лежит добавление текста к изображению, поэтому в качестве примера с фоновым изображением (B) и некоторым текстом с заданным шрифтом, размером точки и шрифтом (A) они составленывместе, чтобы произвести (C): 
В конечном итоге нужно распечатать эти изображения, поэтому фоны используют цветовое пространство CMYK, и мне нужно сохранить весь процесс в пределах CMYK или цветов.выглядеть неправильно при печати.( примечание: превосходная статья о цветовых пространствах и .NET о CodeProject )
Я пробовал несколько разных способов объединения этих изображений вместе:
- System.Drawing неявно преобразует все в RGB
- System.Windows.Media.Imaging - нет методов компоновки
- System.XAML / WPF - очень многообещающе, однако RenderTargetBitmap не работает в форматах Pixel.Cmyk32 (выдает исключение ArgumentException).
Я смотрел, но не пробовал сторонние коммерческие компоненты, так как цены, кажется, начинают расти и продолжают расти:
Isэто возможно в .NET 4?
Редактировать: Поскольку кто-то может захотеть сделать что-то немного другое и просто конвертировать любой формат, который Windows.System.Media.Imaging
может загрузить в CMYK, вот кодЯ использовал:
var bitmapConverter = new FormatConvertedBitmap();
bitmapConverter.BeginInit();
bitmapConverter.Source = sourceImage;
bitmapConverter.DestinationFormat = PixelFormats.Cmyk32;
bitmapConverter.EndInit();
Для уточненияПриведенный выше код преобразует источник изображения в CMYK32 (без прозрачности), однако, если вы используете определенные классы (а именно RenderTargetBitmap
, пропуск вышеупомянутого ImageSource вызовет исключение).