Вверх ↑
Этот топик читают: Гость
Ответов: 283
Рейтинг: 4
#1: 2018-12-21 21:52:28 ЛС | профиль | цитата
Доброго времени суток ув. форумчане...
Подскажите пожалуйста, почему рамка окна жрет мои пиксели... и вообще почему эта рамка рисуется.


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

Вот наглядный пример.
Имеем окно 200 на 200, внутри изображение 200 на 200, с красным контуром, который не активен внизу и справа, поскольку мои пиксели съела рамка в левом верхнем углу.
Ладно там она съела...
Имеем квадрат 5х5 (синий).
Расположим его на 195 пиксель по top&left.
По идее он должен так и остаться 5х5 в нижнем правом углу, но торчит лишь 3х3.



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

_______________________________________________________________________________
Задача в двух словах:
Как нажав на кнопку 195, лицезреть квадрат без потери в пикселях и с рамкой вокруг формы ?!
Всем спасибо за внимание ;)


Add(MainForm,2953706,770,224)
{
Width=200
Height=200
BorderStyle=0
DragForm=0
TransparentColor=16711935
Picture=[ZIP3671020078DAEDD3B10D80300C0041C32429992003D0330C5B662B13501A106201CED2357667E9D7ADEE739C53BBA56BC314E5DAC7B8DF27810F99C0933E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F7E01FA007D803E401FA00FD007E803F401FA007DF803E803F401FA007D803E401FA00FD007E803F4A10FD007E803F401FA007D803E401FA00FD007E8431FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803EE00F7D00EF0E67FED827]
Position=1
}
Add(Image,2856515,917,91)
{
Left=90
Top=170
Width=5
Height=5
Color=16711680
Point(doLeft)
Point(doTop)
}
Add(Button,3544694,623,140)
{
Left=75
Top=25
Width=50
Caption="top 195"
link(onClick,1321434:doWork1,[])
}
Add(Button,4316295,623,175)
{
Left=75
Top=50
Width=50
Caption="top 196"
link(onClick,1321434:doWork2,[(674,181)(674,153)])
}
Add(Button,15688769,623,210)
{
Left=75
Top=75
Width=50
Caption="top 197"
link(onClick,1321434:doWork3,[(674,216)(674,160)])
}
Add(Button,518616,623,245)
{
Left=75
Top=100
Width=50
Caption="top 198"
link(onClick,1321434:doWork4,[(674,251)(674,167)])
}
Add(Button,10530957,623,280)
{
Left=75
Top=125
Width=50
Caption="top 199"
link(onClick,1321434:doWork5,[(674,286)(674,174)])
}
Add(StrList,6322153,791,98)
{
Strings=#3:195|3:196|3:197|3:198|3:199|
Point(doGetString)
Point(onGetString)
link(onGetString,6559438:doEvent1,[])
}
Add(ChanelToIndex,1321434,693,140)
{
Count=5
link(onIndex,6322153:doGetString,[])
}
Add(Hub,6559438,854,105)
{
link(onEvent1,2856515:doLeft,[])
link(onEvent2,2856515:doTop,[])
}


Редактировалось 1 раз(а), последний 2018-12-21 21:54:08
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 25329
Рейтинг: 2070
#2: 2018-12-21 22:14:28 ЛС | профиль | цитата
Master4eG писал(а):
Возможно ли так сделать.

Без увеличения размера окна -- нет. Размер окна -- величина неизменная, все остальное отрисовывается вовнутрь, а не наружу. А в чем проблема увеличить размер окна на величину рамки?

Редактировалось 1 раз(а), последний 2018-12-21 22:15:39
карма: 19

0
Ответов: 283
Рейтинг: 4
#3: 2018-12-21 22:18:47 ЛС | профиль | цитата
nesco писал(а):
Без увеличения размера окна -- нет. Размер окна -- величина неизменная, все остальное отрисовывается вовнутрь, а не наружу.

Покажите пожалуйста пример, просто я свои программы рисую в Adobe Photoshop, подгон всех элементов занимает безумное кол-во времени, сижу с калькулятором высчитываю каждый пиксель.
Уже совсем не соображаю что и как... я и размер окна +2 пикселя делал, но что-то не сошлось. Можете показать как вы считаете правильно будет ?!

--- Добавлено в 2018-12-21 22:23:10

nesco писал(а):
А в чем проблема увеличить размер окна на величину рамки?

Вот попробовал сейчас в моем примере выше сделать окно 202х202, теперь рамка только сверху. То бишь рамке снизу негде получается рисоваться, потому что картинка 200х200 что-ли ?! Парадокс выходит, сделаю больше картинку, рамка отрисуется, но скушав мои пиксели

Редактировалось 1 раз(а), последний 2018-12-21 22:23:10
карма: 0

0
Ответов: 8254
Рейтинг: 773
#4: 2018-12-21 23:02:26 ЛС | профиль | цитата
Master4eG, кроме того ваши любимые пиксели считаются с "0", поэтому расположив ваш квадратик на пикселе (195;195) у вас останется для него на форме 4х4 пикселя, да рамка скушает и квадратик получится 3х3
карма: 14

0
Разработчик
Ответов: 25329
Рейтинг: 2070
#5: 2018-12-21 23:24:23 ЛС | профиль | цитата
Кажется я вспомнил, такое уже было, это не в размере окна проблема. Master4eG, попробуй на форме поставить Ctl3D=true

Редактировалось 1 раз(а), последний 2018-12-21 23:25:02
карма: 19

0
Ответов: 16406
Рейтинг: 1209
#6: 2018-12-21 23:51:07 ЛС | профиль | цитата
Master4eG.jpg
А тут уже вопрос кто и чьи пиксели жрёт.

Add(MainForm,2029438,245,238)
{
Width=200
Height=200
Ctl3D=0
WinStyle=1
BorderStyle=0
DragForm=0
TransparentColor=16711935
Picture=[ZIP3671020078DAEDD3B10D80300C0041C32429992003D0330C5B662B13501A106201CED2357667E9D7ADEE739C53BBA56BC314E5DAC7B8DF27810F99C0933E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F803E401FA00FD007E803F401FA007D803E401F7E01FA007D803E401FA00FD007E803F401FA007DF803E803F401FA007D803E401FA00FD007E803F4A10FD007E803F401FA007D803E401FA00FD007E8431FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803E401FA00F401FA00FD007E803F401FA007D803EE00F7D00EF0E67FED827]
Position=1
}
Add(Image,2856515,392,105)
{
Left=90
Top=170
Width=5
Height=5
Color=16711680
Point(doLeft)
Point(doTop)
}
Add(Button,3544694,98,154)
{
Left=75
Top=25
Width=50
Caption="top 195"
link(onClick,1321434:doWork1,[])
}
Add(Button,4316295,98,189)
{
Left=75
Top=50
Width=50
Caption="top 196"
link(onClick,1321434:doWork2,[(149,195)(149,167)])
}
Add(Button,15688769,98,224)
{
Left=75
Top=75
Width=50
Caption="top 197"
link(onClick,1321434:doWork3,[(149,230)(149,174)])
}
Add(Button,518616,98,259)
{
Left=75
Top=100
Width=50
Caption="top 198"
link(onClick,1321434:doWork4,[(149,265)(149,181)])
}
Add(Button,10530957,98,294)
{
Left=75
Top=125
Width=50
Caption="top 199"
link(onClick,1321434:doWork5,[(149,300)(149,188)])
}
Add(StrList,6322153,266,112)
{
Strings=#3:195|3:196|3:197|3:198|3:199|
Point(doGetString)
Point(onGetString)
link(onGetString,6559438:doEvent1,[])
}
Add(ChanelToIndex,1321434,168,154)
{
Count=5
link(onIndex,6322153:doGetString,[(233,160)(233,146)])
}
Add(Hub,6559438,329,119)
{
link(onEvent1,2856515:doLeft,[])
link(onEvent2,2856515:doTop,[])
}


Редактировалось 2 раз(а), последний 2018-12-22 09:25:28
карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 283
Рейтинг: 4
#7: 2018-12-22 18:28:45 ЛС | профиль | цитата
nesco писал(а):
Кажется я вспомнил, такое уже было, это не в размере окна проблема. Master4eG, попробуй на форме поставить Ctl3D=true

Ну это я догадался, так рамки отключаю у панелей.
Tad
Спасибо большое за ответы, что и стоило доказать, нельзя сделать то, что я хотел.
Ctl3D=true не удобно использовать с панелями.
Например вот:

При Ctl3D=true я рамку рисую сам.
Причем внизу это меню, то есть сколько иконок столько панелей для переключения.
Если панель без рамки (Ctl3D=true),то при выборе будет рамка программы прерываться безрамочной панелью.

Приходится панели смещать на 1 px left и урезать их ширину с 600 до 598, чтобы панель не наезжала на нарисованную рамку главного окна.
___________________________________
Спасибо большое ребята за разбор полета, придрался тут к вам со своими пикселями .
Если кому-то нужны исходники графики (psd) могу скинуть, вместе с готовым sha.

Редактировалось 1 раз(а), последний 2018-12-22 18:30:19
карма: 0

0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)