8 / 8 / 7
Регистрация: 01.01.2016
Сообщений: 386
1

Текстуры, правильно ли я мыслю?

30.09.2016, 14:59. Показов 932. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю красивую панель. Хочу чтобы она была не одного цвета, а покрыта какой-то текстурой. Для этого нахожу изображение какой-то текстуры, которая по размеру не меньше моей панели, обрезаю под размер панели и вставляю в Image, растянутый на всю панель. Правильно я делаю или есть какой-то другой способ работы с текстурами?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2016, 14:59
Ответы с готовыми решениями:

Не правильно подключаю текстуры. Выручите советом
Не знаю как правильно и где целесообразно подключить текстуры, при перерисовке утечка памяти (и не...

Как побитово скопировать с текстуры на текстуры разных форматов, не прибегая к обращениям в CPU?
Если ли способ в opengl скопировать бит в бит текстуры любого формата в uint8 одноканальный, но с...

Поворот Текстуры (не вращая полигон текстуры)
Возник такой вопрос? Как повернуть текстуру на какой то определенный градус не вращая при этом...

Текстуры
Доброго времени суток. есть такой вопрос, как удалить с текстуры цвет например весь белый... эм...

1
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
30.09.2016, 15:29 2
Лучший ответ Сообщение было отмечено edsjeka как решение

Решение

Текстура понятие скорее из OpenGL/DirectX, тут просто "картинка" или "спрайт". Можно вручную рисовать:
Кликните здесь для просмотра всего текста
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Unit
      Unit1;
 
Interface
 
Uses
      Windows,
      Messages,
      SysUtils,
      Variants,
      Classes,
      Graphics,
      Controls,
      Forms,
      Dialogs,
      StdCtrls,
      ExtCtrls;
 
Type
      TForm1 = Class(TForm)
            RadioGroup1: TRadioGroup;          
            Procedure FormCreate(Sender: TObject);
            Procedure FormDestroy(Sender: TObject);
            Procedure FormResize(Sender: TObject);
            Procedure RadioGroup1Click(Sender: TObject);    
            Procedure FormPaint(Sender: TObject);
      Private { Private declarations }
            Background: TBitmap;
      Public { Public declarations }
      End;
 
Var
      Form1: TForm1;
 
Implementation
 
{$R *.dfm}
 
Function CalcRect(Const DstRect: TRect; Const SrcRect: TRect): TRect;
Var w, h, cw, ch: Integer; xyaspect: Double;
Begin
w:=SrcRect.Right-SrcRect.Left;
h:=SrcRect.Bottom-SrcRect.Top;
cw:=DstRect.Right-DstRect.Left;
ch:=DstRect.Bottom-DstRect.Top;
xyaspect:=w/h;
If w>h Then
      Begin
      w:=cw;
      h:=Trunc(cw/xyaspect);
      If h>ch Then
            Begin
            h:=ch;
            w:=Trunc(ch*xyaspect);
            end;
      End
Else
      Begin
      h:=ch;
      w:=Trunc(ch*xyaspect);
      If w>cw Then
            Begin
            w:=cw;
            h:=Trunc(cw/xyaspect);
            End;
      End;
With Result Do
      Begin
      Left:=0;
      Top:=0;
      Right:=w;
      Bottom:=h;
      End;
OffsetRect(Result, (cw-w) Div 2, (ch-h) Div 2);
End;
 
Procedure TForm1.FormCreate(Sender: TObject);
Begin
DoubleBuffered:=True;
Background:=TBitmap.Create();
Background.PixelFormat:=pf24bit;
Background.Width:=64;
Background.Height:=64;
Background.Canvas.Ellipse(0, 0, 64, 64);
End;
 
Procedure TForm1.FormDestroy(Sender: TObject);
Begin
Background.Free();
End;
 
Procedure TForm1.FormResize(Sender: TObject);
Begin
Repaint();
End; 
 
Procedure TForm1.RadioGroup1Click(Sender: TObject);
Begin
Repaint();
End;
 
Procedure TForm1.FormPaint(Sender: TObject);
Var Rc: TRect;
Begin
Canvas.Lock();
Case RadioGroup1.ItemIndex Of
      0:
            Begin
            Canvas.Brush.Bitmap:=Background;
            Canvas.FillRect(Canvas.ClipRect);
            End;
      1:
            Begin
            Canvas.StretchDraw(Canvas.ClipRect, Background);
            End;
      2:
            Begin
            Canvas.Brush.Color:=Color;
            Canvas.FillRect(Canvas.ClipRect);
            Rc:=CalcRect(Canvas.ClipRect, Background.Canvas.ClipRect);
            Canvas.StretchDraw(Rc, Background);
            End;
      Else
            Begin
            Canvas.Brush.Color:=Color;
            Canvas.FillRect(Canvas.ClipRect);
            End;
      End;
Canvas.Unlock();
End;
 
End.
1
30.09.2016, 15:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2016, 15:29
Помогаю со студенческими работами здесь

Текстуры в Qt
Помогите понять как работать с текстурами. Нашел в нете несколько примеров, делаю по ним. вывод на...

Текстуры
В общем такая проблема. Есть задача натянуть несколько текстур на ландшафт(который уже...

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

Смазанные текстуры
Добрый вечер, подскажите пожалуйста: Экспортировал из 3dsMAX'а модель в формате .max, в итоге...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru