У меня нет полного объяснения, но, по крайней мере, есть рабочее решение.
Прежде всего, кажется, что установка свойства RenderMode
фигуры на opengl
или zbuffer
делает изображениена экране выглядят как напечатанные (сетка сверху), а установка на painters
заставляет сетку вернуться к фону.С помощью print
:
Замечание о средствах визуализации: при печати фигур MATLAB не всегда использует тот же рендер, что и на экране.Это из соображений эффективности.Однако в некоторых случаях печатный вывод не совсем похож на экранное представление.В этих случаях указание -zbuffer или -opengl, скорее всего, даст вам вывод, эмулирующий экран.
Однако при попытке использовать каждый из доступных средств визуализации, то есть painters
, zbuffer
илиopengl
, дает несколько иные результаты, но все с сеткой сверху:
% Problem still exists in all 3 options:
print(gcf, '-r100', ['test1' '.png'], '-dpng','-painters');
print(gcf, '-r100', ['test1' '.png'], '-dpng','-zbuffer');
print(gcf, '-r100', ['test1' '.png'], '-dpng','-opengl');
Установка точки останова в строке 142 в файле toolbox\matlab\graphics\private\render.m
, а затем вызов print
с параметром -painters
, показывает, что 3-й вход, переданный hardcopy
, равен -dzbuffer
.Если вы измените его на -dpainters
:
inputargs{3}='-dpainters' % while in breakpoint
, а затем нажмете F5, чтобы продолжить, сетка на полученном изображении перейдет в фоновый режим.