На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> J++ , не совсем java, но...
    В общем всем привет, не знаю куда написать - напушу здесь...

    Вопрос такой:
    Каким образом можно создать в памяти картинку заданного размера, понарисовать в неё различных прямоугольничков, точек и линий, а потом передать дальше по return?

    Например на Java я делал это так:

    ExpandedWrap disabled
      public Image getIm(int H,int W){
       
          Color c = new Color(0,0,0);
       
          BufferedImage bi = new BufferedImage(W, H,BufferedImage.TYPE_INT_ARGB);
       
          Graphics2D g=bi.createGraphics();
       
          g.setColor(c.WHITE);
          g.fillRect(0, 0, W-1, H-1);
      //рисуем...
          return (Image)bi;
      }


    В эклипсе BufferedImage подключается import java.awt.image.*,
    а J++ под вижуал стидией в java.awt.Image; такого класса нет. :(

    и java.awt.Graphics2D тоже нет. :(
    Сообщение отредактировано: Fiera -
      В каком окружении выполняется этот код? Доступны ли объекты java.awt.Component?
        А что такое окружение и как определить доступны ли они?

        Добавлено
        Я вообще щас пытаюсь провернуть обходной манёвр.
        Сделал так :

        ExpandedWrap disabled
          Image bi = Toolkit.getDefaultToolkit().createImage(new byte[1], 1, 1);
          bi = bi.getScaledInstance(W, H, bi.SCALE_FAST);
          Graphics g = (Graphics)bi.getGraphics();


        но ругается что

        Type 'java.awt.Image' is not assignable to 'System.Drawing.Image'

        При попытке прорисовать картинку в форму.
        Как можно сконвертировать java.awt.Image' в 'System.Drawing.Image' ?

        Добавлено
        в эклипсе правда такой манёвр кончается:

        getGraphics() not valid for images created with createImage(producer)
        java.lang.UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)

        вообще есть какой-нибудь способ рисовать картинки в памяти, а потом выводить их на форму, а не наоборот как это делается везде? (где уж я только не смотрел)
          Цитата Fiera @
          А что такое окружение и как определить доступны ли они?

          Я имел в виду - gui или не gui. Но вы уже мой способ попробовали...
            В общем решение такое:

            ExpandedWrap disabled
              public Image getIm(int H,int W){
               
              Color c = new Color();
              Pen p=new Pen(c.get_DarkBlue(), 1);
               
              Image bi = new System.Drawing.Bitmap(W, H);
              Graphics g = Graphics.FromImage(bi);
               
              g.DrawRectangle(p,0, 0, W - 1, H - 1);
               
              //рисуем...
                  return (Image)bi;
              }


            Пойду поем что-ли чонить...
            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0203 ]   [ 14 queries used ]   [ Generated: 17.05.24, 12:15 GMT ]