Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/17: Рейтинг темы: голосов - 17, средняя оценка - 4.94
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 112
1

Фон для рисунка

14.02.2009, 14:17. Просмотров 3143. Ответов 6
Метки нет (Все метки)

Как сделать фон для рисунка (bmp или клеточки нарисованные програмным способом), который бы при рисовании на нем не стирался?

Добавлено через 44 минуты 32 секунды
Проблема в том, что надписи выводимые в TImage стирают нарисованный программмно фон. Пока не знаю, что делать.
Перерисовку всего делать не хочу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2009, 14:17
Ответы с готовыми решениями:

Выбор фонового рисунка для программы
Здравствуйте форумчане.Подскажите как можно сделать фон для программы и чтоб...

Фон для ToolBar и прозрачность значков изображений
Имеется ToolBar в него гружу картинки из ImageList. Как сделать чтобы...

Отображение рисунка
Коллеги, помогите пожалуйста понять проблему! C++ Builder 6 Объект TPaintBox...

Создание рисунка на TPanel
Всем привет. Вот такой вопрос, как можно перерисовать картинку с TImage на...

Побитовое копирование рисунка
Есть задание на курсач: Разработать программу, демонстрирующую влияние...

6
Argon-1
0 / 0 / 0
Регистрация: 14.02.2009
Сообщений: 7
14.02.2009, 19:43 2
По-моему лучше сделать два рисунка, один спереди - рисунок, другой за ним - фон.
Передний рисунок просто затранспарентить и все.
0
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 112
14.02.2009, 19:45  [ТС] 3
Цитата Сообщение от Argon-1 Посмотреть сообщение
По-моему лучше сделать два рисунка, один спереди - рисунок, другой за ним - фон.
Передний рисунок просто затранспарентить и все.
А, что такое затранспарентить?
0
Vourhey
Почетный модератор
6492 / 2266 / 185
Регистрация: 29.07.2006
Сообщений: 12,534
14.02.2009, 19:49 4
Прозрачным сделать.
0
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 112
19.02.2009, 22:15  [ТС] 5
Не могу понять почему Img заливает белым весь фон, хотя прозрачность стоит = true
C++
1
2
3
4
5
6
7
8
9
10
Img->Transparent = True;
GF->Img->Width= GF->Fon->Width-1;
GF->Img->Height = GF->Fon->Height-1;
 
Len = 5;
Wide = 5;
 
Course = 0;
FirstStart = true;
}
Если убрать
C++
1
2
GF->Img->Width= GF->Fon->Width-1;
GF->Img->Height = GF->Fon->Height-1;
Тогда все нормально.
Как решить эту проблему

Добавлено через 8 часов 10 минут 10 секунд
Актуально и интересно. В чем проблема?

Добавлено через 58 минут 48 секунд
После шананства и танцев с бубнами проблему решил. Почти.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TGF::FormCreate(TObject *Sender)
{
Len = 5;
Wide = 3;
Img->Canvas->Pen->Width = Wide;
 
Fon->AutoSize = true;
Img->Width = Fon->Width+1;
Img->Height = Fon->Height+1;
 
Course = 0;
FirstStart = true;
}
Есть проблема. Img->Width = Fon->Width+1 не работает. Так было 160 так и остается. Не знаю, что и думать.
Другая проблема. Процедура определяет координаты мыши, но не верно.Может быть на пикселей 10 вверх. Есть подозрение, что как-то виноват фон.
C++
1
2
3
4
5
6
7
8
9
void __fastcall TGF::ImgMouseMove(TObject *Sender, TShiftState Shift,
      int x, int y)
{
XM = x;
YM = y;
 
MainF->StatusBar->Panels->Items[0]->Text = "X: "+IntToStr(XM) + " / "+ IntToStr(GF->Img->Width);
MainF->StatusBar->Panels->Items[1]->Text = "Y: "+IntToStr(YM) + " / "+ IntToStr(GF->Img->Height);
}
Как определить какой TImage находиться поверх другого?

Добавлено через 12 часов 19 минут 33 секунды
По прежнему актуально.

Добавлено через 9 часов 17 минут 7 секунд
Разобрался. Что менялся размер надо установить свойство autosize у Img в состоняие false.
Ошибки с координатами - мой "косяк"

Добавлено через 20 минут 19 секунд
Похоже эта прога не оставит меня в покое. Размер Img изменился, но дальше своих первоначальных размеров (160 на 160) рисоватьна холсте (canvas) не хочет - просто часть изображения обрезает. Рефреши и репаинты не помогают. Что делать?
0
KoFeMaH
38 / 25 / 4
Регистрация: 21.02.2009
Сообщений: 249
21.02.2009, 21:58 6
C++
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
// Конструктор
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    try
    {
        back = new Graphics::TBitmap;
        back->LoadFromFile("sky.bmp");
 
        plane = new Graphics::TBitmap;
        plane->LoadFromFile("plane.bmp");
        plane->Transparent = true;
    }
    catch ( EFOpenError &e) {
        return;
    }
 
    // установить размер формы в соответствии
    // с размером фонового рисунка
    Form1->ClientWidth = back->Width;
    Form1->ClientHeight = back->Height;
 
    // исходное положение объекта
    x =  -30;
    y =  70;
 
    Timer1->Interval = 25;
    Timer1->Enabled = true;
}
 
// Сигнал от таймера
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  TRect r; // область, в которой находится объект
 
  // стереть объект (восстановить фон)
  r = Rect(x,y,x+plane->Width,y+plane->Height);
  Canvas->CopyRect(r,back->Canvas,r);
 
  x = x + 2;
 
  // нарисовать объект на новом месте
  Canvas->Draw(x,y,plane);
 
  if ( x > Form1->Width + plane->Width + 10)
  {
    x = -20;
  }
}
 
// обработка события Paint
void __fastcall TForm1::FormPaint(TObject *Sender)
{
  if ((! back->Empty) && (!plane->Empty ) ){
    Canvas->Draw(0,0,back);
    Canvas->Draw(x,y,plane);
  }
  else
    Canvas->TextOut(10,10,"Ошибка загрузки битовых образов");
}
1
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 112
24.02.2009, 11:18  [ТС] 7
А, как можно нарисовать прозрачный прямоугольник c прозрачными линиями?
0
24.02.2009, 11:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2009, 11:18

Размещение рисунка на Panel
Здравствуйте, подскажите пожалуйста как разместить bitmap рисунок на панели....

Искажение рисунка Glyph накнопке
Добрый вечер! Такая вот вещь - до этого обращал внимание, что есть небольшие...

Маштаб и перемещение рисунка в Image
Подскажите:Я загружаю на Image рисунок. Какую функцию надо использовать чтобы...


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

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

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