Ruslan, Ну так я не пойму в чём вопрос. Такое чувство что вам 3 года и вы спрашиваете почему солнце желтое. Ну сказано что нужно вызывать через new, так и вызывайте не задавая лишних вопросов.
Вам что оператор new глаза режет или что. Хотите без new, создайте в классе статический метод который будет создавать новый экземпляр этого класса и возвращать его, и можете создавать классы без new вызывая этот метод.
AlexanderProkopenko, Ну это всеравно не правильно, то что перемещается picturebox. Picturebox должен служить просто рендером, окном для отображения результата, а перемещать нужно изображения на битмапе, перерисовывая его, а я так понимаю вы рисуете на форме.
AlexanderProkopenko, Не понимаю зачем перемещать, picturebox.
Ну если у вас перещаются только picturebox, и прямоугольник рисуется правильно просто не в том месте, то всего скорее вам нужно добавлять некий offset к рисованию прямоугольника. Например если координаты мыши берутся от левого верхнего угла формы, то offset будет равен координатом смещения picturebox относительно левого верхнего угла, крч + координаты picturebox. Точнее их нужно не прибавлять , а отнимать
AlexanderProkopenko, Вот пример на javascript. Есть два одинаковые холста, оба размерами 100х100, на обеих нарисованы квадраты размером 20х20. Всё одинаково, но второй холст принудительно растягиваем в два раза по ширине и смотрим, что квадрат также по ширине растянулся в два раза!
AlexanderProkopenko, Зачем вы растягиваете, изменяйте размеры хоста. Тоесть был битмап 100х100, если нужно увеличить, не увеличивайте размер контейнера(pictureBox'а). Сначала измените размер битмапа на новый, например 200х200, а потом измените размеры picturebox'a. Я конечно код не видел это так по моим предположениям как у там может быть сделанно. Иначе это получается не пеинт, а срань какая-то, делайте правильно
Сергей Сергей, херня этот html2canvas, если стили будут хоть немного сложные, всё поедет и не будет соответствовать действительности. Расширением для хрома такое врядли нормально сделаешь.
В код не смотрел ну проблема ясна и так, если начинает неправильно отображаться после растягивания и перемещния, это происходит из-за того что вы трансформирует холст, но не применяете эти изменения для инструмента рисования. Не нужно трансформировать холст.
Тоесть например если у вас холст размером 100х100 и вы рисуете в нормальных пропорциях квадрат 5х5, то он и будет отображаться как 5х5, а если вы растянуть хост до 100х200 (но фактически он 100х100), тоесть по иксу всё будет растягиваться в 2 два раза. И нарисованный квадрат будет отображаться как 5х10 хотя фактические размеры его 5х5. Если обратно сжать, то всё будет ок.
Тоесть или меняйте фактически размеры хоста на реальные 100х200 пикселей без растягивания или применяйте такое растягивание к инструментам, тот же жёлтый квадрат нужно будет растягивать по иксе в два раза. К перемещениям это также относится!
var str = '/project/:projectId/menu/:menuId';
let projectId = getVal(str,"project");
let menuId = getVal(str,"menu");
function getVal(str,attr){
let reg = new RegExp(`/${attr}/:([^/]+)`,"gi");
return reg.exec(str)[1];
}
Ну смысле зачем. Ты создаешь персону, и тебе нужно получить название компании персоны. Если company не инициализовано, то там null, ты обращаешься пытаясь получить компанию, и у тебя всё ломается. А так у тебя все персоны по умолчанию имеют компанию unknown. Можно обращаться сразу к этому свойству без проверок, если конечно кто-то принудительно не запишет туда null.
Убери это присвоение и вызови print, и увидишь ошибку.