Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Печать фрэйма (маштабируемость кадра) (http://www.flasher.ru/forum/showthread.php?t=126123)

maxen 11.06.2009 09:46

Печать фрэйма (маштабируемость кадра)
 
Вложений: 1
Задача: сделать кнопку, которая бы печатала весь кадр (наверное правильно сказать фрэйм). Она будет стоять не на всех кадрах, а выборочно.
Я сделал кнопку, при нажатии которой идет печать этого кадра.

Код AS1/AS2:

function _print()
{
    var __reg1 = new PrintJob();
    if (__reg1.start())
    {
        if (__reg1.addPage(0))
        {
            __reg1.send();
        }
    }
    false;
}
 
printBut.onRelease = _print;

Проблема только в том, что изображение печатается не правильно - как бы горизонтальное изображение на вертикальном листе. Т.е изображение обрезается.
Можно ли как-то выравнить это изображение - сделать его маштабируемым чтоли т.е. лист вертикальный, рисунок горизонтальный, но только уменьшенный (от края листа, до края).

У меня так получилось - мне нужно было распечатать не весь кадр, а только табличку. Я ее сделал мовиклипом (my_mc) и при нажатии кнопки (my_btn) сробатывало такое собитие:
Код AS1/AS2:

my_btn.onPress = function() {
print (my_mc, "bmovie");
};

А как тут этого добится не понимаю.
Может кто посмотрит код?

KiL33 11.06.2009 13:54

Для того чтобы не вылизало за края нужно изображение подгонять под формат листа.
Примерно так
Код AS1/AS2:

function content_f(pageW:Number, pageH:Number, contentObj:Object){
                //процентное выражение размеров области печати от размеров клипа
                var clipW = pageW / contentObj._width * 100;
                var clipH = pageH / contentObj._height * 100;
                if ((clipW < 100 && clipH < 100) || (clipW > 100 && clipH > 100)) {
                        if (Math.min(clipW, clipH) == clipW) {
                                contentObj._xscale = contentObj._yscale = clipW;
                        }
                        else {
                                contentObj._xscale = contentObj._yscale = clipH;
                        }
                }
                else if (clipW >= 100 && clipH <= 100) {
                        contentObj._xscale = contentObj._yscale = clipH;
                }
                else if (clipW < 100 && clipH > 100) {
                        contentObj._xscale = contentObj._yscale = clipW;
                }
}

И вызывать функцию
Код:

...
 if (__reg1.start())
    {
сontent_f(__reg1.pageWidth, __reg1.pageHeight, obj);
...

P.s. я сам не проверял..мне листов жалко.
P.P.s. зачем эти двойные подчеркивания? они только мешают..я бы ничего не понял, если хотя бы 100 строк кода было вот так написано..

maxen 12.06.2009 11:09

to KiL33
Пробовал по всякому, но у меня не получается...также печатается страница (т.е. не по формату, обрезается).

Зато попробовал другой способ - на кнопку поставил такой код:
Код AS1/AS2:

on (release) {
  print(this, "bmovie");
}

Теперь печатается так как мне надо (от края до края альбомного листа, весь кадр презентации как бы маштабируется), но теперь он печатает все кадры презентации! А мне надо только выборочные кадры, на которых я поставлю кнопки печати, нажав на которые распечатается только этот кадр,а не все, которые мне надо.


Часовой пояс GMT +4, время: 07:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.