Качество масштабирования в SilverLight
От: Sarah Smith Россия  
Дата: 27.08.07 19:51
Оценка:
Hi!

Есть проблема: нужно рендерить hi-res (прибл. 2500x3500 px) иллюстрации в SilverLight, имея возможноть зумирования. Возникли проблемы с алгоритмом интерполяции при масштабировании: не вижу способа, как его поменять. Нужен Highquality Bicubic, или что-то вроде него. Раньше это делалось в своём самодельном ActiveX через GDI+. Вот сравнение: http://84.21.85.58/tmpimages/imgs.htm

Скачал MS-овский пример: http://silverlight.net/samples/1.1/SilverlightSurface/Run/default.html
Поставил Orcas, откомпилил и подменил картинки на свои: качество низкое.
Порылся в доках по WPF и нашёл:
protected internal function get VisualBitmapScalingMode (): BitmapScalingMode

и
RenderOptions.SetBitmapScalingMode(MyImage, BitmapScalingMode.HighQuality);

однако ни того не другого в agclr от SIlverlight 1.1 не доступно. Тоесть: не могу поменять качество интерполяции.

Может есть какой способ получить Highquality Bicubic Interpolation, как в GDI+?

Thanks and good luck!
Re: Качество масштабирования в SilverLight
От: Sarah Smith Россия  
Дата: 27.08.07 19:52
Оценка:
Пробовал откомпилировать http://silverlight.net/samples/1.1/SilverlightSurface/Run/default.html и подменить имедж на свой: тот же результат. Плохое качество зума. А RenderOptions в WPF/E отсутствует.

Попробовал Flash 9: http://84.21.85.58/tmpimages/imgs.htm
Совсем другое дело.

import flash.display.BitmapData;
var bm:BitmapData = BitmapData.loadBitmap( "MyImg" );

var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.attachBitmap( bm, this.getNextHighestDepth(), "auto", true );

this._quality = "BEST";
mc._xscale = 20;
mc._yscale = 20;

var listener:Object = new Object();
listener.onMouseDown = function( ev: Object )
{
if( Key.isDown(Key.CONTROL) )
mc._xscale += 5, mc._yscale += 5;
else
mc._xscale -= 5, mc._yscale -= 5;


}
Mouse.addListener( listener );

mc.play();
this.stop();

Тоесть: он без проблем позволяет повысить качество и не жрёт при этом много памяти. Неужели SilverLight такой кривой?
Re: Качество масштабирования в SilverLight
От: McSeem2 США http://www.antigrain.com
Дата: 29.08.07 05:36
Оценка:
Здравствуйте, Sarah Smith, Вы писали:

SS>Может есть какой способ получить Highquality Bicubic Interpolation, как в GDI+?


Масштабировать, а тем более, уменьшать битмапы — дело неблагодарное и тухлое по определению. Надо рендерить по-новой в нужном разрешении. SL это должен уметь по-любому.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.