В настоящее время мы используем функцию масштабирования на PlotCube, которая использует колесико мыши для увеличения и уменьшения изображения 2D-изображения (TwoDMode = true). Мы также используем масштаб, полученный с помощью функции прямоугольника выбора зума, снова предоставляемой библиотекой ILNumerics. Проблема заключается в том, что, когда мы увеличиваем/увеличиваем 2D-изображение с помощью колеса мыши, на изображении начинают появляться белые пятна (я думаю, что это связано с областью отсечения просмотра). Этого не происходит, когда мы увеличиваем масштаб с помощью большого количества, используя функциональность прямоугольника выбора зума.Белые патчи, появляющиеся в A MouseWheel, основанные на двумерных изображениях
Есть исправление для этой проблемы? или мы должны сами реализовать мышь для мыши (путем улавливания событий в колесиках мыши и соответственно изменения пределов).
Вот пример кода, вставьте его в основное приложение (Windows Forms или WPF). Экземпляр ILPanel следует называть iLPanel и присоединять его ко всему содержимому главного или родительского окна. Вызовите метод «IlPanelOnLoad()» во время «загруженного» события окна.
private void IlPanelOnLoad()
{
ilPanel.Scene = PlotImageTest();
var pc = ilPanel.Scene.First<ILPlotCube>();
pc.DataScreenRect = new RectangleF(0.15f, 0.10f, 0.80f, 0.70f);
ilPanel.Scene.Configure();
ilPanel.Refresh();
}
private ILScene PlotImageTest()
{
var scene = new ILScene();
// the data to show comes from a predefined
// example dataset contained in ILNumerics
ILArray<float> A = ILMath.tosingle(ILSpecialData.terrain["0:240;0:240"]);
// we fetch to min and max values for tight limits
float min, max;
A.GetLimits(out min, out max);
// Create the surface
ILSurface surface = new ILSurface(A);
surface.Wireframe.Visible = false; // for fast rendering
surface.Markable = false;
// scene setup: add a plotcube in 2D mode...
var plotCube = scene.Add(new ILPlotCube(twoDMode: true) {
// add a surface to the plot cube
Children = {
surface
},
// configure the datascreen rect. This makes the plotcube
// content fill the whole panel area
DataScreenRect = new RectangleF(0.13f, 0.13f, 0.74f, 0.74f),
// configure the plot cube limits to show no margins
Limits = {
XMin = 0, YMin = 0, ZMin = min,
XMax = A.S[1] - 1, YMax = A.S[0] - 1, ZMax = max + 1
}
});
return scene;
}
Вы можете представить наглядный пример? – user492238
Я тоже изначально планировал, но StackOverflow не позволил мне, поскольку у меня недостаточно репутации. –
Добавили пример кода. –