none
перенос ноля RRS feed

Ответы

  • Xновое = Xизфайла + XкоординатаЦентраЭкрана.
    Yновое = -YизФайла + YкоординатаЦентраЭкрана.

    Только не пишите так русскими буквами в коде,
    а то некоторые засмеют.

    Под экраном я имею ввиду то окошко (pictureBox или что Вы используете).

    пс.
    я был таким же работающим студентом,
    и тоже работал уже несколько лет до того и во время (при том работал по профессии совсем далёкой от программирования).
    И программированием стал интересоваться только на 2-м курсе.

    так, на всякий случай.


    • Изменено INFEL8 13 декабря 2012 г. 17:42
    • Помечено в качестве ответа Abolmasov Dmitry 18 декабря 2012 г. 12:40
    13 декабря 2012 г. 17:34
  • то просто обычный параллельный перенос из геометрии.
    http://msdn.microsoft.com/ru-ru/library/6a1d65f4.aspx

    (что и сделано теми двумя мелкими формулами, написанными выше, только минус перед игреком тут не стоит)
    Так что наверное для построения графика надо ещё что-то использовать.
    (может быть RotateTransform(180F), из того же примера, только там 30F, но не уверен, что правильно сработает, пробовать надо)

    Ну или ставить минус перед игреком, как и сделано в формуле про игрек.



    • Изменено INFEL8 14 декабря 2012 г. 4:43
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:36
    14 декабря 2012 г. 4:38
  • Ну примерно.
    только это опять же не сработает,
    так как Вы написали:
    присвоить точке значение числа одного. (то есть точка как-будто должна стать числом),
    потом другое.

    А Вам нужно указать, что Вы хотите именно координату точки записать.
    оно появится когда сразу после point1 поставите точку.
    point1.X = x (ну то, которое из файла) + 811.
    и для игрека есть Y у Point.

    И не пишите прято так 811, 440.
    Лучше создайте до цикла переменную типа Point,
    и в неё запишите координаты центра, и опять же не прямо так числами,
    а пусть бы считалось программно.
    .......... = new Point(длина/2, высота/2);

    Потом эту переменную и используете.
    Вместо тех 811 будет pointCenter.X

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:35
    14 декабря 2012 г. 6:16
  • не совсем,
    опять же.

    Point pointCenter = new Point(pictureBox1.Width / 2, pictureBox1.Height /2);
    Point point1 = new Point(x + pointCenter.X, -y +pointCenter.Y);

    под pictureBox1 я имею ввиду тот контрол, на котором рисуете.
    Длина и ширина - ну наверное прямо так и сойдёт.

    Вот эту point1 добавляйте в список точек (там уже есть добавление в коде, что написан в другой теме).
    То есть добавляйте не то, что там добавляется, а именно это.


    • Изменено INFEL8 14 декабря 2012 г. 8:41
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:35
    14 декабря 2012 г. 8:41
  • 1) Измените класс Point на PointF

    2) используйте вместо double тип float, либо сами руками приведите к нему в конструкторе PointF:

    PointF point1= new PointF((float)x+pointCenter.X, (float)-y+pointCenter.Y);


    Для связи [mail]

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    17 декабря 2012 г. 11:57
  • Если остался тот же код, что Вы писали в предыдущий раз,
    то так и должно быть.
    И уже в предыдущий раз я говорил почему.

    у Вас там есть строка
    pointList.Add(point);
    вот тут вместо point напишите point1.

    и саму эту строку напишите ниже строки создания point1.

    а строку
    var point = new Point((int)x, ((int)y));
    сделайте такой строкой
    // var point = new Point((int)x, ((int)y));
    или сотрите

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    18 декабря 2012 г. 8:44
  • нужно PointF - ну сделайте список с ними (List<PointF> pointList = new List<PointF>();).
    про разворот - сначала эту тему закрыть надо.
    Я не очень понимаю зачем разворачивать то, чего нет ещё.
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    18 декабря 2012 г. 10:16

Все ответы

  • так чтобы вверх по y были полож координаты, а вниз отрицательные

    И по x  слева от ноля отрицательные, а справа положительные

    12 декабря 2012 г. 7:03
  • Если предположить, что "ноль" - это начало координат (x==0,y== 0),
    то или своё что-то изобретать, или ни как (ну или ни то ни то, например если я не знаю 3-го варианта).

    с другой стороны, в этом случае мне не было нужды переносить "ноль",
    когда рисовал на панельке (кстати можно панельку двигать, в некоторых случаях, вот и "ноль" поехал).

    Я просто пересчитывал координаты как там надо.

    Надо в центре что-то нарисовать - берёшь координаты центра изображения, и рисуешь там.
    • Изменено INFEL8 12 декабря 2012 г. 7:05
    12 декабря 2012 г. 7:05
  • ноль это начало координат
    12 декабря 2012 г. 7:18
  • как выглядит пример x==0, y==0
    12 декабря 2012 г. 7:23
  • А зачем его переносить?,
    вдруг не надо,
    и получится как у меня выше написано - просто пересчитывать координаты.
    У точек есть кстати методы, Offset() например.
    Там но пересчёт понятнее.

    (есть местами така штука как TranlateTransform, но не знаю можно ли ей тут пользоваться, проще пересчитать)

    //
    А, наверное примерно понял.
    Может быть задача: построить что-то вроде осей координат обычных декартовых.
    С центром в центре изображения.
    Ну и там график какой-нибудь.

    В этом случае тоже.
    Всё на пересчётах можно сделать.
    Методы класса всё решат.


    • Изменено INFEL8 12 декабря 2012 г. 7:35
    12 декабря 2012 г. 7:32
  • мне обязательно нужно, пожалуйста
    12 декабря 2012 г. 7:36
  • Ну так я же вроде бы дал ответ на вопрос.

    Было спрошено - как перенести "ноль"?
    Я ответил - пересчитывать.
    12 декабря 2012 г. 7:58
  • А как это? Мне нужно чтобы ноль переместился в центр программно Это обязательно
    • Изменено georgushek 12 декабря 2012 г. 8:08
    12 декабря 2012 г. 8:08
  • "Ноль" (ну или нуль) рисования на контроле (Control) ни куда не передвинется.
    (ну или я не знаю, может и есть как).

    Но Вы можете рисовать на этом контроле, указывая нужные Вам координаты (с минусами и тд.).
    Для этого нужно эти ваши (ну те, которые с минусами и тд.) координаты, пересчитывать на те, что использует Control.
    И уже пересчитанные использовать для рисования.

    // ПС. Если нужен код, то это уже другой вопрос.
    // Напишется он примерно так (не заголовок темы, а внутри уже):
    // Напишите, пожалуйста, код на C#, как используя обычные Декартовы координаты,
    // рисовать изображение на контроле (Control).
    // Нужно сделать так, чтобы центр координатной сетки совпадал с центром изображения.
    // Положительные значения Y - вверх, отрицательные - вниз.


    • Изменено INFEL8 12 декабря 2012 г. 8:27
    12 декабря 2012 г. 8:24
  • я понял, но когда я меняю знак, то по x  и y функция уходит далеко в + и получется ерунда, даже если  я буду это пересчитывать, потому что получается в итоге совсем другой график!
    12 декабря 2012 г. 9:03
  • тем более, если это синусоида

    И строится она из файла txt, который я не могу менять

    • Изменено georgushek 12 декабря 2012 г. 9:10
    12 декабря 2012 г. 9:07
  • А дайте код пересчёта.
    Может там подправить что и всё наладится.
    Вдруг где-то ошибка.

    Нужна та функция (или метод), где Вы передаёте исходную точку (и наверное ещё один параметр),
    а получаете новую, которую уже отправляете в массив точек для рисования.

    • Изменено INFEL8 12 декабря 2012 г. 9:17
    12 декабря 2012 г. 9:09
  • он лежит в теме исключение столбца и строки
    12 декабря 2012 г. 9:19
  • Далеко бежать, да и искать надо.
    Один метод, маленький он же.
    Скопируйте, пожалуйста.
    12 декабря 2012 г. 9:20
  • У меня проблема с этим т.к. я сижу за планшетом и с копированием тут сложно
    • Изменено georgushek 12 декабря 2012 г. 9:45
    12 декабря 2012 г. 9:38
  • Ну тогда подождёт компьютера наверное.

    ПС.
    добежал я всё-таки до туда, и не нашёл метода пересчёта, который я просил скопировать.
    Может он там и есть, но не нашёл.
    12 декабря 2012 г. 9:45
  • значит его там нет! Тогда покажите как он реализуется, пожалуйста
    12 декабря 2012 г. 10:20
  • Так:
    Берётся исходная точка, передаётся в метод пересчёта.
    Там с зная центр изображения (контрола) происходит создание новой точки.
    Так же учитывается то (как Вы уже сказали), что на месте рисования (контроле (Control)),
    координаты отсчитываются от верхнего левого угла.
    И после этого происходит возврат её вызывающей стороне.

    Новую точку уже используете в рисовании.

    Если может когда-то у Вас был предмет "Инженерная графика" (или типа того),
    то там это ещё более детально рассказывается.

    Хотя, и так тут несколько строчек коротких получится наверное, если код писать.

    ПС.
    Мне казалось, что Вы уже попробовали сделать пересчёт.
    Показалось из одного из здешних сообщений.
    Если не показалось, то напишите то, что у Вас написано.
    Метод этот.

    Вдруг там ошибка, о которой выше же говорилось.

    А если показалось, то попробуйте, и напишите то, что получилось (код).

    А график у Вас наверное получается - некоторое количество дуг,
    выступающих сверху экрана изображения.
    Но это просто от отсутствия или неправильности пересчёта.
    (или так и должно быть)

    • Изменено INFEL8 12 декабря 2012 г. 10:38
    12 декабря 2012 г. 10:35
  • Именно такой график и получается, только он мне не нужен, не могли бы вы мне показать как реализуется этот метод?
    12 декабря 2012 г. 10:45
  • Сначала Вы сделайте свой ход, а то смысла в этом всём нет (почти совсем).

    То, что выше у меня написано сделайте.
    А там будет видно, где у Вас ошибка, или сразу порадуемся успеху.
    • Изменено INFEL8 12 декабря 2012 г. 10:56
    12 декабря 2012 г. 10:54
  • я не представляю что такое пересчет?
    12 декабря 2012 г. 11:07
  • вы вышли из сеанса?
    12 декабря 2012 г. 11:34
  • Это форум, я залазию сюда когда получится.

    А пересчёт - я имею ввиду посчитать рисуемые координаты из старых,
    с учётом всего что я сказал выше
    12 декабря 2012 г. 12:09
  • Расшифруйте, что такое подсчитать рисуемые координаты из старых
    12 декабря 2012 г. 12:44
  • У меня в этом файле больше 100 координат
    12 декабря 2012 г. 12:49
  • ну что координат много - хорошо.
    точнее график получится.

    Вы же всё рвно в цикле их перебираете,
    вот перед добавлением в список (там в коде есть добавление в список точек) нужно полученную точку переработать и переработанную точку добавлять в список.

    (ну или потом из того списка новый сделать и заменить, но лучше сразу нормальное делать)

    Посчитать новые координаты из старых - имеется ввиду,
    что у вас есть координаты X и Y.
    Точнее точка, у неё координаты эти.

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

    И у точки будут новые координаты, с учётом чего я выше описал.
    12 декабря 2012 г. 13:02
  • то–есть создать цикл
    12 декабря 2012 г. 13:11
  • а он там уже есть
    и получение начальных точек (из которых новые создавать) тоже есть

    останется просто эти точки отправить в функцию (метод)
    и то что получилось добавлять в список точек.
    Сейчас там добавляются начальные точки (которые только что получились из файла).


    Метод напишите который точки новые создаёт из старых.
    • Изменено INFEL8 12 декабря 2012 г. 13:26
    12 декабря 2012 г. 13:25
  • это мне понятно!  То–есть добавить в var curves = File.ReadAllLines(@"c:\liniya.txt");

    var pointList = new List<Point>();

    12 декабря 2012 г. 13:36
  • ну да, вот в этот список точек и добавлять всесто того что там сейчас добавляется,
    то, что получится после обработаки функцией.

    В pointList

    • Изменено INFEL8 12 декабря 2012 г. 13:40
    12 декабря 2012 г. 13:39
  • var Point = new Point ((int)X, ((int)y));

    pointList.Add(point);

    points = pointList.ToArray();

    pictureBox1.Refresh();

    • Изменено georgushek 12 декабря 2012 г. 13:52
    12 декабря 2012 г. 13:48
  • ну да, вот только Х и У надо будет не те, что из файла получились,
    а переделанные функцией
    12 декабря 2012 г. 13:49
  • А как это, то–есть с индексами?
    12 декабря 2012 г. 13:58
  • Не надо с индексами.
    Просто добавляйте в список уже переделанные точки.

    Метод вообще сначала напишите, как Вы себе представляете обработку старых координат на новые.
    Пусть даже словами.

    А там уже одно действие останется.
    Ну или два, если не сразу а языке программирования напишете.

    12 декабря 2012 г. 14:01
  • сначало идут две строчки, которые я вам ранее написал, а потом другой pointList что ли?
    12 декабря 2012 г. 14:11
  • Достаточно использовать всё ровно то, как есть,
    ни чего менять не надо.
    Просто в pointList добавляйте новые точки с пересчитанными координатами.

    Напишите функцию, которая меняет точку.
    Это Ваша приоритетная задача тут.
    Про остальное забудьте временно.

    Пусть не на языке программирования (пока что), но хоть что-то напишите.
    Вы же сами все условия задачи написали:
    Дано:
    1) Координаты точки, полученной из файла (как если бы они отсчитывались от центра)
    // понятно, что их много, но всё равно по одной обрабатывать.
    2) Координаты в изображении отсчитываются от верхнего левого угла, а у Вас (из файла только что получили) координаты от центра.

    Найти:
    Вам и нужно из координат "от центра" сделать координаты "от левого верхнего угла".


    • Изменено INFEL8 12 декабря 2012 г. 14:37
    12 декабря 2012 г. 14:36
  • значит мне нужно переделать var point = new Point((int)x, ((int)y));
    • Изменено georgushek 12 декабря 2012 г. 14:45
    12 декабря 2012 г. 14:44
  • точнее из вот этой вот point нужно сделать новую точку.
    эту точку(ну или её координаты) передаёте в функцию, которая вернёт переделанную точку.
    и вместо вашей этой point поставите новую, изменённую.

    наверное в функцию нужно будет передавать ещё остальные данные, которые нужны будут для рассчёта.
    ну там сами увидете.
    • Изменено INFEL8 12 декабря 2012 г. 14:54
    12 декабря 2012 г. 14:53
  • ну сделал я из point point1, а дальше чего?
    12 декабря 2012 г. 15:36
  • покажите код, где вы изменяете координаты point1 исходя из координат point и данных, описанных выше.

    естественно координаты точек point и pont1 не равны.

    //
    ну или просто математические действия напишите,
    как вы считаете координаты новые исодя из того, что в файле было.

    Ну там
    X(новое) = X(старое)...................чего-то там +/-/*...
    Y(новое) = Y(старое)...................чего-то там +/-/*...
    • Изменено INFEL8 13 декабря 2012 г. 7:23
    12 декабря 2012 г. 15:42
  • я так не делал! Я написал такие же  2 строчки, только написал point1

    • Изменено georgushek 13 декабря 2012 г. 8:03
    13 декабря 2012 г. 7:59
  • Сделайте, после этого можно будет двигаться дальше.

    А если Вы просто написали
    Point point1 = new Pont(x, y); // где x и y те же самые, что пришли из файла,
    то это пока ни чего.

    В общем ждём_с пока Вы сделаете хоть что-нибудь, считающее координаты исходя из старых и условий, описанных выше.

    Если не знаете как на языке пограммирования написать - не проблема пока что.
    Напишите как бы Вы посчитали эти координаты.
    Можно даже словами, без математики.
    Просто на уровне понятия.
    13 декабря 2012 г. 8:07
  • вы хотите сказать, что я должен их складывать?
    13 декабря 2012 г. 9:34
  • ну или вычитать, или и то и то,
    чего там в математике есть

    конечно не сами с собой складывать и прочее делать
    • Изменено INFEL8 13 декабря 2012 г. 10:18
    13 декабря 2012 г. 10:16
  • правильно я понял, нужно записать

    var point1 = new Point((int)x, ((int)y));

    double.Parse(curve);

    curve=x+y;

    curve.Tostring();

    pointList.Add(point);

    13 декабря 2012 г. 12:30
  • что-то тут какая-то бессмыслеца написана.

    Сделайте для начала вычисление координаты Х хотя бы.
    Вот у Вас есть старая Х - которая пришла из файла.
    Есть знание того, что координаты на экране отсчитываются от левого верхнего угла.

    Вам нужно этот файловый Х сделать экранным.
    То есть посчитать какая там координата на экране должна получиться.

    Опять же.
    Не пишите на языке программирования для начала (тем более, что бессмыслица получается пока что).
    Просто русским языком опишите как Вы бы посчитали эту экранную координату.
    13 декабря 2012 г. 13:28
  • я знаю что первая точка 0,0;1,0 и т.д , если двигаться направо
    13 декабря 2012 г. 13:45
  • А вы мне математически можете описать, а я вам тогда программно напишу
    13 декабря 2012 г. 13:53
  • ну от Вас нужно написать хоть как-то.
    Русским языком проще всего.

    А то получается как:
    напишите мне латиницей,
    а я могу кириллицей это переписать (в qip кинуть  и нажать ctrl+t).

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

    Вы студент?



    • Изменено INFEL8 13 декабря 2012 г. 14:17
    • Помечено в качестве ответа georgushek 14 декабря 2012 г. 10:01
    • Снята пометка об ответе georgushek 14 декабря 2012 г. 10:35
    13 декабря 2012 г. 14:16
  • Я понимаю, что вы мне хотите сказать, но только подобные рассуждения не подходят для общения в интернете, это стоит обсуждать в живую, потому что это искажает представление о возможностях человека с которым вы общаетесь, и вообщем о человеке мнение не правильное формируется.
    • Изменено georgushek 13 декабря 2012 г. 16:58
    13 декабря 2012 г. 16:40
  • по этому, лучше потсказывать в лоб, а не косвенно т.к. тем самым вы своего собеседника ставити в не ловкое положение
    13 декабря 2012 г. 16:48
  • Я всё подсказал уже в первом же ответе.
    Если хотите код, я напишу (это уже будет не подсказка, и не ответ на вопрос, заданный вначале).
    Но это сделает только хуже, если хотите научиться программировать.

    Я понимаю, конечно, что у студентов часто просто нет времени вообще что-то ещё поделать,
    кроме тех задач, которые горят (сам был студентом),
    но эту задачу Вы могли бы уже раз 100 за это время решить.
    13 декабря 2012 г. 16:55
  • А я смотрю вы отличный преподаватель, скорее всего вы пожилого возраста или около того, но дело не в этом, тяжело понять что вы хотите сказать потому что это интернет, а это работает только при живом общении! Если вы мне напишите код , то я смогу описать и понять что там происходит.
    13 декабря 2012 г. 17:21
  • Я работающий студент дневного обучения! А работаю я уже 9 лет!
    13 декабря 2012 г. 17:24
  • Xновое = Xизфайла + XкоординатаЦентраЭкрана.
    Yновое = -YизФайла + YкоординатаЦентраЭкрана.

    Только не пишите так русскими буквами в коде,
    а то некоторые засмеют.

    Под экраном я имею ввиду то окошко (pictureBox или что Вы используете).

    пс.
    я был таким же работающим студентом,
    и тоже работал уже несколько лет до того и во время (при том работал по профессии совсем далёкой от программирования).
    И программированием стал интересоваться только на 2-м курсе.

    так, на всякий случай.


    • Изменено INFEL8 13 декабря 2012 г. 17:42
    • Помечено в качестве ответа Abolmasov Dmitry 18 декабря 2012 г. 12:40
    13 декабря 2012 г. 17:34
  • зачем вы пытаетесь мне грубить? Я понял, кстати, если вы внимательно посмотрите, то если бы вы более правильно писали ранее, то и мой вариант был бы точнее!
    13 декабря 2012 г. 17:48
  • Я не пытаюсь грубить и не грублю.
    А вот чем Ваш вариант с прибавлением икса к игреку точнее я не знаю.

    Я Вам дал готовое решение.
    Подставьте это вместо х и у в конструкторе точки new Point((int)x, (int)y),
    И всё может быть заработает.

    Центр экрана наверное посчитаете без проблем.
    У Вас же есть его длина и ширина.

    13 декабря 2012 г. 17:52
  • Конечно найду! А вариант не точнее это вам нужно было писать более точно, а не подкалывать меня.
    13 декабря 2012 г. 18:09
  • я не подкалывал.

    я говорил ровно то, что могло бы навести на мысль как сделать.
    ну наверное не угадал

    13 декабря 2012 г. 18:15
  • Конечно найду! А вариант не точнее это вам нужно было писать более точно, а не подкалывать меня.

    Я извиняюсь что вмешиваюсь в вашу светскую беседу, но что значит "нужно"? Вам никто ничего не обязан. Человек решает оказать вам помощь и не ждет за это благодарности, но и садится ему на шею тоже не нужно.

    Не жаление прикладывать усилия к решению нужной вам задачи сыграет вам только во вред и люди более опытные пытаются до вас это донести.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    13 декабря 2012 г. 18:17
    Отвечающий
  • Я благодарен всем, кто мне хочет помочь, но не надо при этом подшучивать и т.д., надо быть более тактичным чтобы не перешло это в обиду. И в формате форума, нужно писать точно в глаз, или если есть желание научить человека, то лучше пригласить его на встречу или доп. занятия, потому что это не подходящий формат для учебы.
    13 декабря 2012 г. 18:37
  • Я ни в каком месте не подшучивал,
    ни в одном ответе.

    Если вдруг Вам так показалось где-то,
    что ж, извините,
    я не специально.

    Наверное лучше мне вообще не отвечать на форуме.
    Я думал, что помогаю или пытаюсь помочь хотя бы.
    Ладно...
    13 декабря 2012 г. 18:47
  • Xновое = Xизфайла + XкоординатаЦентраЭкрана.
    Yновое = -YизФайла + YкоординатаЦентраЭкрана.

    Только не пишите так русскими буквами в коде,
    а то некоторые засмеют.

    Под экраном я имею ввиду то окошко (pictureBox или что Вы используете).

    пс.
    я был таким же работающим студентом,
    и тоже работал уже несколько лет до того и во время (при том работал по профессии совсем далёкой от программирования).
    И программированием стал интересоваться только на 2-м курсе.

    так, на всякий случай.



    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:36
    • Снята пометка об ответе Abolmasov Dmitry 18 декабря 2012 г. 12:40
    13 декабря 2012 г. 19:04
  • не надо обижаться
    13 декабря 2012 г. 19:06
  • В том ответе нет ни чего "насмешного".
    Если про "засмеют", то это я из своего опыта.
    А написал я русскими буквами рпосто от лени переключать раскладку,
    да и понятнее так.

    В общем ладно,
    забыли.

    Теперь главное чтобы заработало.
    13 декабря 2012 г. 19:19
  • -_-"

    Полсотни сообщений о том, как сложить пару чисел...

    Если бы это было не на msdn, где принято выкать, а на каком-нибудь другом форуме, я бы дал волю выражениям...

     

    P.S. INFEL8, всё верно, в данном случае можно применить TranslateTransform.

    13 декабря 2012 г. 21:00
  • Не могли бы показать как это работает? Пожалуйста, я буду только благодарен! 
    14 декабря 2012 г. 3:13
  • то просто обычный параллельный перенос из геометрии.
    http://msdn.microsoft.com/ru-ru/library/6a1d65f4.aspx

    (что и сделано теми двумя мелкими формулами, написанными выше, только минус перед игреком тут не стоит)
    Так что наверное для построения графика надо ещё что-то использовать.
    (может быть RotateTransform(180F), из того же примера, только там 30F, но не уверен, что правильно сработает, пробовать надо)

    Ну или ставить минус перед игреком, как и сделано в формуле про игрек.



    • Изменено INFEL8 14 декабря 2012 г. 4:43
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:36
    14 декабря 2012 г. 4:38
  • Я вчера еще об этом подумал, спасибо! у вас есть возможность, проводить доп. занятия? Я сейчас серьезно!
    14 декабря 2012 г. 5:00
  • point1=x+811;

    point1=–y+440;

    Так?


    • Изменено georgushek 14 декабря 2012 г. 5:31
    14 декабря 2012 г. 5:30
  • Ну примерно.
    только это опять же не сработает,
    так как Вы написали:
    присвоить точке значение числа одного. (то есть точка как-будто должна стать числом),
    потом другое.

    А Вам нужно указать, что Вы хотите именно координату точки записать.
    оно появится когда сразу после point1 поставите точку.
    point1.X = x (ну то, которое из файла) + 811.
    и для игрека есть Y у Point.

    И не пишите прято так 811, 440.
    Лучше создайте до цикла переменную типа Point,
    и в неё запишите координаты центра, и опять же не прямо так числами,
    а пусть бы считалось программно.
    .......... = new Point(длина/2, высота/2);

    Потом эту переменную и используете.
    Вместо тех 811 будет pointCenter.X

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:35
    14 декабря 2012 г. 6:16
  • это выглядет так:

    var point1 = new Point(pointCentr.x/2, pointCentr.y /2);

    point1.x=x;

    point1.y=y;

    14 декабря 2012 г. 7:41
  • не совсем,
    опять же.

    Point pointCenter = new Point(pictureBox1.Width / 2, pictureBox1.Height /2);
    Point point1 = new Point(x + pointCenter.X, -y +pointCenter.Y);

    под pictureBox1 я имею ввиду тот контрол, на котором рисуете.
    Длина и ширина - ну наверное прямо так и сойдёт.

    Вот эту point1 добавляйте в список точек (там уже есть добавление в коде, что написан в другой теме).
    То есть добавляйте не то, что там добавляется, а именно это.


    • Изменено INFEL8 14 декабря 2012 г. 8:41
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:35
    14 декабря 2012 г. 8:41
  • А что мне нужно сделать с выбором столбцов?
    • Изменено georgushek 14 декабря 2012 г. 10:09
    14 декабря 2012 г. 9:54
  • ну вот!
    14 декабря 2012 г. 10:43
  • понятия не имею что такое выбор столбцов и как оно отоносится к текущей теме
    14 декабря 2012 г. 11:25
  • Пожалуйста, как вы сами сказали будьте более тактичны и не разводите оффтоп. Из 75-ти сообщений полезных максимум 5. Это форум, а не реал-тайм чат, не нужно писать по 2 раза, ваще сообщение увидят все кому это интересно и ответят как только будет возможность. Подождите ответам минимум 24 часа, перед тем как 2ой раз поднимать тему. Спасибо.

    Это вам предупреждение, потому что тема становиться нечитабельной и понять невозможно ее.

    --------

    Что же касается вопроса, то как уже ни раз сказали - просто скорректируйте точки перед выводом их на экран.

    У вас есть PointCentr - центральная точка экрана.

    Когда вы создаете Point при чтении из файла или перед выводом на график, то добавьте простой сдвиг new Point(x + pointCentr.X, point.Y - y), где x и y - это значения из файла. И все.


    Для связи [mail]

    14 декабря 2012 г. 11:34
  • var values = curve.Split(new char[]{‘ ‘},

    StringSplitOptions.RemoveEmpatyEntrries);

    var x = double.Parse(values[1], CultureInfo.InvariantCulture);

    var x = double.Parse(values[2]- CultureInfo.InvariantCulture);

    var point = new Point((int)x, ((int)y));

    pointList.Add(point);

    Point pointCenter = new Point(pictureBox1.Width/2, pictureBox1.Height/2);

    Point point1= new Point(!+pointCenter.X, -y+pointCenter.Y);

    }

    там double
    • Изменено georgushek 14 декабря 2012 г. 13:09
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    • Снята пометка об ответе georgushek 18 декабря 2012 г. 12:35
    14 декабря 2012 г. 11:53
  • что мне делать?
    17 декабря 2012 г. 5:23
  • То, что выше сказано.
    В коде это не сделано.
    17 декабря 2012 г. 6:08
  • 1) Измените класс Point на PointF

    2) используйте вместо double тип float, либо сами руками приведите к нему в конструкторе PointF:

    PointF point1= new PointF((float)x+pointCenter.X, (float)-y+pointCenter.Y);


    Для связи [mail]

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    17 декабря 2012 г. 11:57
  • Почему—то рисует как рисовал до этого
    18 декабря 2012 г. 8:16
  • Если остался тот же код, что Вы писали в предыдущий раз,
    то так и должно быть.
    И уже в предыдущий раз я говорил почему.

    у Вас там есть строка
    pointList.Add(point);
    вот тут вместо point напишите point1.

    и саму эту строку напишите ниже строки создания point1.

    а строку
    var point = new Point((int)x, ((int)y));
    сделайте такой строкой
    // var point = new Point((int)x, ((int)y));
    или сотрите

    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    18 декабря 2012 г. 8:44
  • Там нужно ставить PointF, а как мне развирнуть из вертикального в горизонтальное положение?
    • Изменено georgushek 18 декабря 2012 г. 10:16
    18 декабря 2012 г. 9:36
  • нужно PointF - ну сделайте список с ними (List<PointF> pointList = new List<PointF>();).
    про разворот - сначала эту тему закрыть надо.
    Я не очень понимаю зачем разворачивать то, чего нет ещё.
    • Помечено в качестве ответа georgushek 18 декабря 2012 г. 12:34
    18 декабря 2012 г. 10:16
  • я закрыл. Все есть, все работает!
    Что нужно сделать?
    • Изменено georgushek 18 декабря 2012 г. 11:10
    18 декабря 2012 г. 10:22
  • Думаю, что тему создать.
    Не уверен (правила форума лень читать), но я бы так и сделал.
    18 декабря 2012 г. 12:42