Показать сообщение отдельно
Старый 18.05.2009, 19:25   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Ну, в общем, у меня манипуляциями в Excel прозрачность получилась. Взял свой пример отсюда Быстрый способ вывода данных в Excel с картинками и добавил фрагмент сегодняшнего дня. Через области белого цвета будет видна сетка таблицы.
X++:
static void Job98_Transparent(Args _args)
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();
    Image   image = new Image();

    COM     xlApp;
    COM     wbook;
    COM     activeSheet;
    COM     range;
    int     i, timeStart;

    COM     shape;
    COM     pf;
    ;

    timeStart = timenow();

    doc.NewFile('',false);
    wbook = doc.getComDocument();

    xlApp = wbook.Parent();
    activeSheet = xlApp.ActiveSheet();

    range = activeSheet.Range('B1');

    xlApp.ScreenUpdating(false);
    for (i=1;i<=400;i++)
    {
        image.captureScreen(0+(i-1)*2, 0+(i-1)*2, 300+(i-1)*2, 100+(i-1)*2);
        //image.transparent(true, 255, 255, 255);

        image.clipboardCopy();

        range.RowHeight(78);

        range.pasteSpecial(0);

// 18.05.2009 ПРОЗРАЧНОСТЬ -->
        shape = xlApp.Selection();
        shape = shape.ShapeRange();

        pf = shape.PictureFormat();
        pf.TransparentBackground(-1);
        pf.TransparencyColor(WinAPI::RGB2int(255,255,255));
// 18.05.2009 <--

        range = range.Offset(1,0);
    }
    xlApp.ScreenUpdating(true);

    doc.visible(true);

    box::info(strFmt('Всего секунд: %1', timenow()-timeStart));
}