Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
1

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

23.05.2015, 16:55. Просмотров 939. Ответов 17
Метки нет (Все метки)

Ребят, можете помочь
Выполнить изображение в соответствии с шаблоном, приведенном на рисунке
Название: image049.gif
Просмотров: 41

Размер: 20.8 КбНазвание: image050.gif
Просмотров: 42

Размер: 18.9 Кб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2015, 16:55
Ответы с готовыми решениями:

Заполнение матрицы в соответствии с приведенным шаблоном
помогите пожалуйста Дана матрица. Составьте программу ее заполнения в...

Проверить, правильно ли заполнена присланная менеджером таблица в соответствии с шаблоном
Здравствуйте уважаемые, Если я написал не в той ветке, прошу меня направить в...

Выполнить операции с наименьшим и наибольшим элементами массива в соответствии
Выполнить операции с наименьшим и наибольшим элементами массива в соответствии ...

!Составление меню!Выполнить на ПК программу создания файла в соответствии с вариантом задания.
1.)Выполнить на ПК программу создания файла в соответствии с вариантом задания....

Для двумерного массива, сгенерированного в соответствии с задания 7 выполнить соответствующий вариант...
Для двумерного массива, сгенерированного в соответствии с задания 7 выполнить...

17
Joey
Форумчанин
831 / 552 / 219
Регистрация: 05.05.2015
Сообщений: 3,199
Записей в блоге: 1
23.05.2015, 19:50 2
Лучший ответ Сообщение было отмечено Devil40rus как решение

Решение

Когда рисуете на Canvas, у него есть свойство Brush.Style:=bsDiagCross - этим типом кисти и нарисовано ваше изображение.
А далее, как вариант - зарисовываете весь прямоугольник этой кисточкой, а там, где белые места - рисуете снова белой кисточкой. Если вы даже рисовать не умеете, тогда:
Delphi
1
2
3
Canvas.Brush.Color:=clBlack;
Canvas.Brush.Style:=bsDiagCross;
Canvas.FillRect(0,0,Form1.Width,Form1.Height);//для закраски всей формы
Далее в закрашенной форме уже рисуете белые квадраты там, где надо
Delphi
1
2
Canvas.Brush.Color:=clWhite;//меняем цвет кисти на белый
Canvas.FillRect(15,0,50,30)//например
Поймете дальше как делать

Не по теме:

и вообще, не в тот раздел пишете. Для таких задач есть раздел Delphi графика



Добавлено через 1 минуту
Но учтите, я сказал как вариант, потому что мой вариант - сложный, придется много писать. Я не знаю, есть ли способ легче, наверняка есть

Добавлено через 23 минуты
Devil40rus, Ну как, получается?
1
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
23.05.2015, 22:07  [ТС] 3
Спасибо, что откликнулись
Ну так, немного
0
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
23.05.2015, 23:18 4
Цитата Сообщение от Joey Посмотреть сообщение
потому что мой вариант - сложный, придется много писать
ну так и где ваш "сложный" вариант? Или религия не позволяет такие сложности на форум выкладывать ?)

как вариант можно записать в текстовый файл матрицу, там где белое поле - скажем 0 написать, не закрашено - X, скажем пусть 1 квадратик будет 20x20 пикселов

далее дело техници читаем из файла 0 и x и в зависимости что есть - закрашиваем/не закрашиваем

смысл схемы - схема вышивание крестиком, если конечно народ еще знает, что это такое
1
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
23.05.2015, 23:27  [ТС] 5
Да, по этому методу надо.
Скажите пожалуйста, как потом считать из файла?
0
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
23.05.2015, 23:44 6
можно разными способами это сделать
пример считывания в массив вот тут есть мой пример
Подсчитать средний балл каждого ученика
0
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
23.05.2015, 23:45  [ТС] 7
Помогите, пожалуйста
0
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
24.05.2015, 00:23 8
с чем?
0
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
24.05.2015, 00:46  [ТС] 9
пришлите пожалуйста unit с подключением
0
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
24.05.2015, 00:49 10
простите, юнит чего? оО
0
Devil40rus
0 / 0 / 2
Регистрация: 29.09.2014
Сообщений: 105
24.05.2015, 00:50  [ТС] 11
считывания из файла
0
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
24.05.2015, 01:03 12
что совсем так плохо с программировнием?
то что я там давал, там пример считывания содержимого из файла в массив, и делается это в программе, если вы этого не увидели, пишу это тут для вас)) я тупо не знаю с какого боку к тебе подойти, чтобы понять что ты хочешь от нас и что ты хочешь сам )))
0
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,746
24.05.2015, 01:08 13
Цитата Сообщение от Devil40rus Посмотреть сообщение
считывания из файла
Проси уж сразу полный код. Ведь ясен пень ты ничего сам сделать не можешь.
1
Joey
Форумчанин
831 / 552 / 219
Регистрация: 05.05.2015
Сообщений: 3,199
Записей в блоге: 1
24.05.2015, 10:10 14
Цитата Сообщение от Arcor Посмотреть сообщение
ну так и где ваш "сложный" вариант
Я же написал, как сделать с помощью рисования на канве, и основные несколько строчек кода написал, а дальше ему надо лишь копировать и исправлять цифры. Я же не могу за него программу написать

Добавлено через 1 минуту
Цитата Сообщение от Arcor Посмотреть сообщение
как вариант можно записать в текстовый файл матрицу, там где белое поле - скажем 0 написать, не закрашено - X, скажем пусть 1 квадратик будет 20x20 пикселов
Вот это и есть
Цитата Сообщение от Joey Посмотреть сообщение
Я не знаю, есть ли способ легче
Голосую за ваш вариант, он лучше
0
Sergio Leone
2467 / 1112 / 579
Регистрация: 07.06.2014
Сообщений: 3,259
24.05.2015, 10:21 15
Цитата Сообщение от Devil40rus Посмотреть сообщение
Скажите пожалуйста, как потом считать из файла?
если файл просто текстовый, вида такого:
Код
1 1 1 0 0 0 0 1 1 0 
1 1 1 0 0 0 0 1 1 0 
1 1 1 0 0 0 0 1 1 0 
1 1 1 0 0 0 0 1 1 0
то считать можно, например, и по старинке:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const n=10;
var f : TextFile;
var mp:array[1..n,1..n] of byte;
     i,j : integer;
...
begin
 assignfile(f, 'ИмяФайласРисунком.txt');
 reset(f);
 for i := 1 to n do begin
     for j := 1 to n do
        read(f,pole[i,j]);
     ReadLn(f);
   end;
  closefile(f);
end;
но я боюсь, что northener прав, тебе не нужен пример кода, тебе программа нужна полностью.
Если это так - то жаль!
1
Arcor
4899 / 1846 / 387
Регистрация: 20.11.2009
Сообщений: 5,971
Записей в блоге: 1
24.05.2015, 13:00 16
Лучший ответ Сообщение было отмечено Mawrat как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TMatrix = Array of Array of Integer;
 
type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
  private
    DesignMatrix: TMatrix;
    CanDraw: Boolean;
    W, H: Integer;
  public
    { Public-Deklarationen }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function LoadMatrixFromFile(APath: String): TMatrix;
var F: TextFile;
    c: Char;
    i, j: Integer;
begin
  AssignFile(F, APath);
  Reset(F);
  j := 0;
  i := 0;
  while not Eof(F) do
    begin
      j := 0;
      // читаем пока не встретится перенос строки
      while not Eoln(F) do
        begin
          SetLength(Result, i + 1);      // увеличиваем размер строк у матрицы на +1
          SetLength(Result[i], j + 1);   // увеличиваем размер столбцов для первой строки
          Read(F, Result[i, j]);         // считываем данные
          j := j + 1;               // счетчик столбцов
        end;
      Read(F, c);                   // заглушка, чтобы передвигаться по файлу
      Read(F);
      i := i + 1;                   // счетчик строк
    end;
  CloseFile(F);
end;
 
procedure DrawDesign(M: TMatrix; C: TCanvas; W: Integer; H: Integer);
var i, j: Integer;
begin
  for i := 0 to Length(M) - 1 do
    begin
      for j := 0 to Length(M[i]) - 1 do
        begin
          if M[i, j] = 1 then
            begin
              C.Brush.Style := bsDiagCross;
              C.Brush.Color := clBlue;
              C.Pen.Color := clWhite;
              C.Rectangle(W * j, H * i, W * j + W, H * i + H);
            end
          else
            begin
              C.Brush.Style := bsClear;
              C.Brush.Color := clWhite;
              C.Pen.Color := clWhite;
              C.Rectangle(W * j, H * i, W * j + W, H * i + H);
            end;
        end;
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  W := 30;
  H := 30;
 
  CanDraw := False;
  DesignMatrix :=  LoadMatrixFromFile('c:\123.txt');
 
  PaintBox1.Height := Length(DesignMatrix) * H;
  PaintBox1.Width := Length(DesignMatrix[0]) * W;
 
  CanDraw := True;
 
end;
 
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  if CanDraw then  DrawDesign(DesignMatrix, PaintBox1.Canvas, W, H);
end;
 
end.
держи горе луковое )

свои картинки сам в текстовый файл переводи, мне лень было

входные данные
Кликните здесь для просмотра всего текста
Код
0 0 0 1 0 1 0 0
1 1 0 1 1 0 1 1
0 0 0 0 1 1 1 1
1 0 1 0 1 1 0 0
0 0 0 1 1 0 1 0
1 1 1 1 0 1 1 0
0 0 0 0 0 0 0 0
1 1 0 1 1 0 1 1


вот что вывелось
1
Миниатюры
Выполнить изображение в соответствии с шаблоном, приведенном на рисунке  
Joey
24.05.2015, 13:19
  #17

Не по теме:

Цитата Сообщение от Arcor Посмотреть сообщение
{ Public-Deklarationen }
Deutsch? )))

0
Arcor
24.05.2015, 13:22     Выполнить изображение в соответствии с шаблоном, приведенном на рисунке
  #18

Не по теме:

ja, es ist auf deutsch


Не по теме:

да, это по немецки, чтобы проблем с админами не было, в виде что офф язык русский :)

0
24.05.2015, 13:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2015, 13:22
Привет! Вот еще темы с ответами:

Приложение попыталось выполнить операцию, недопустимую в соответствии с использующейся политикой безопасности
Приложение попыталось выполнить операцию, недопустимую в соответствии с...

Выполнить арифметико-логические операции в двоичной системе счисления в соответствии с вариантом
3. Выполнить арифметико-логические операции в двоичной системе счисления...

Диаграмма направленности. Как сделать изображение таким, как на черно-белом рисунке
Добрый день. Не подскажете, как сделать изображение таким, как на черно-белом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru