Windows 7 TextureBrush.. ctor () ошибка

Если у вас следующий html-код:

<button id="myButtonUp">myButtonTextForUp</button>
<button id="myButtonDown">myButtonTextForDown</button>
<ul>
  <li>line_1</li>
  <li>line_2</li>
  <li>line_3</li>
</ul>

Я предполагаю, что у вас уже есть что-то, что нужно пометить каждые li с, поэтому после я предполагаю, что помеченный li имеет класс markedLi; Следующий код должен теоретически переместить этот элемент вверх или вниз (полностью непроверенный с курса):

$('#myButtonUp').click(function(){
  var current = $('.markedLi');
  current.prev().before(current);
});
$('#myButtonDown').click(function(){
  var current = $('.markedLi');
  current.next().after(current);
});
5
задан Jon Dewees 4 May 2009 в 13:50
поделиться

3 ответа

Оказывается, решение этой проблемы было связано с самим используемым файлом PNG для фона. Я просто открыл его с помощью Paint.NET и повторно сохранил, затем снова поместил в проект, и он сработал.

Не уверен, что изменилось, но это решило проблему.

1
ответ дан 14 December 2019 в 13:46
поделиться

У меня была аналогичная проблема. В моем случае я избавился от MemoryStream, из которого загрузил образ.

//The following throws and OutOfMemoryException at the TextureBrush.ctor():

    /*someBytes and g declared somewhere up here*/
    Bitmap myBmp = null;
    using(MemoryStream ms = new MemoryStream(someBytes))
       myBmp = new Bitmap(ms);

    if(myBmp != null) //that's right it's not null.
       using(TextureBrush tb = new TextureBrush(myBmp)) //OutOfMemoryException thrown
          g.FillRectangle(tb,0,0,50,50);

//This code does not throw the same error:

    /*someBytes and g declared somewhere up here*/
        MemoryStream ms = new MemoryStream(someBytes);
        Bitmap myBmp = new Bitmap(ms);

        if(myBmp != null)
           using(TextureBrush tb = new TextureBrush(myBmp))
              g.FillRectangle(tb,0,0,50,50);
4
ответ дан 14 December 2019 в 13:46
поделиться

Пожалуйста, не утилизируйте изображение и не закрывайте объект filestream, из которого вы получили изображение, до вызова класса TextureBrush для создания плитки. В противном случае класс TextureBrush выбросит исключение Out of Memory.

Поэтому лучший способ - показать плиточное изображение, вызвав TextureBrush Image, а затем закрыть объект filestream в событии Paint оконной формы.

1
ответ дан 14 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: