Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!) / 25 сообщений из 51, страница 1 из 3
20.10.2013, 05:02
    #38434349
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Я в VB6 использовал PictureBox и Frame.

При этом преимущественно PictureBox -
он в VB6 отвечает следующим требованиям:
1) Возможность "простого" размещения картинки средствами среды
PictureBox1.Picture = "C:\test.bmp"
2) Могу рисовать поверх PictureBox используя понятие hdc .
3) Роль контейнера, т.е. могу натыкать туда Options, либо просто групировать туда контролы: по смыслу, для удобства, и т.д. Либо чтобы одновременно скрывать/показывать группы контролов.
4) Могу сабклассить PictureBox, например для использования:
Показательный пример - обработка WM_CTLCOLORBTN, WM_CTLCOLOREDIT, WM_CTLCOLORLISTBOX -когда надо обеспечить "прозрачность" контролов расположенных поверх рисунка. Ну или для любых других целей.

Я так понял что местный PictureBox (.Net) категорически не удовлетворяет ни одному из требований кроме первого.
У него даже понятие handle (HWND) отсутствует.

Что использовать?
Panel? Как там с "простым размещением рисунка"?

Теперь о Frame.
В VB6 я Frame недолюбливал и использовал только ради рамки с текстом.
Да и то. Приходилось обычно вкладывать PictureBox внутрь Frame, т.к. при применении манифест-стилей были глюки с прорисовкой контролов, если вкладывать их внутрь Frame напрямую.
Я читал что Frame=Panel / GroupBox (в завис. от того нужна ли граница с текстом).
Эквивалентна ли замена с т. зр. сабклассинга и так далее, а не с точки зрения подхода школьника "влепить туда картинку и хватит"?

Если мой ход мыслей насчет
Frame (VB6)->GroupBox(.NET)
Picturebox(VB6) -> Panel (.NET)
верен,
то насколько прочие "интересные" контейнеры скажем
TableLayoutPanel, SplitContainer
отвечают требованиям ПОЛНОЦЕННОСТИ.

Еще. Про GDI/GDI+

То что ваша Graphics это один в один обертка над GDI+, это я понял. Очень бы хотелось думать что обертка полная и безглючная, потому что мне в дальнейшем понадобится отображение многостраничных TIFF, различные фильтры (например компрессии этих TIFF, сохранение в разных форматах и т.д.) , изменение разрешения, к-ва цветов и т.д..

Но я не вижу например простой обертки над GDI, кот. честно говоря нужно значительно чаще:
К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false)
API-код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
      Case WM_DRAWITEM 'классика
        dm = CType(Marshal.PtrToStructure(m.LParam, GetType(DRAWITEMSTRUCT)), DRAWITEMSTRUCT)
        If dm.CtlType = ODT_MENU Then
          Dim item_disabled As Boolean
          item_disabled = dm.itemState And ODS_DISABLED
          'здесь устанавливаем "серый стиль" на классике (код ниже позволяет поменять цвет menu item на любой!!!)
          If App_ThemesEnabled() = False Then
            If item_disabled Then SetTextColor(dm.hdc, GetSysColor(COLOR_GRAYTEXT))
          End If


По ".Net варианту" приходится городить такой огород:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub menu_EditItem_DrawItem(ByVal sender As Object,
                                     ByVal e As System.Windows.Forms.DrawItemEventArgs)
    Dim item_disabled As Boolean = Not CType(sender, MenuItem).Enabled Then
    'либо e.State And DrawItemState.Disabled = DrawItemState.Disabled

    'только классика
    'здесь устанавливаем "серый стиль" на классике
    If App_ThemesEnabled() = False Then
      If item_disabled Then
        Dim hdc As IntPtr = e.Graphics.GetHdc()
        SetTextColor(hdc,
         System.Drawing.ColorTranslator.ToWin32(System.Drawing.SystemColors.GrayText))
        e.Graphics.ReleaseHdc()
      End If
    End If


При этом с ф-цией
Код: vbnet
1.
2.
  Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As IntPtr, _
   ByVal crColor As Integer) As Integer


я не справился.
По идее есть свойство
DrawItemEventArgs.ForeColor - свойство
но оно ReadOnly

В нормальной жизни такие штуки делаются через GDI а не GDI+.
Через GDI+ я могу нарисовать итем включая текст самостоятельно,
что все стрипы похоже и делают,
но заниматься херней таким рисованием НЕ ХОЧУ и НЕ БУДУ
по крайней мере для случаев когда подобные издержки не требуются, как в приведенном примере.

Т.е. как быть с GDI (которое не плюс)?
...
Рейтинг: 0 / 0
20.10.2013, 09:37
    #38434372
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий772) Могу рисовать поверх PictureBox используя понятие hdc .
У него даже понятие handle (HWND) отсутствует.

Вы принципиально не читаете мануалы?

Код: c#
1.
2.
IntPtr hwnd = this.pictureBox1.Handle;
Graphics g = Graphics.FromHwnd(hwnd);



Дмитрий773) Роль контейнера, т.е. могу натыкать туда Options, либо просто групировать туда контролы: по смыслу, для удобства, и т.д. Либо чтобы одновременно скрывать/показывать группы контролов.

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

Дмитрий77Panel? Как там с "простым размещением рисунка"?
Для простого размещения используйте backgroundImage.

Если очень хочется, можно рисовать и по панели.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
IntPtr hwnd = this.tabloPanel.Handle;
Graphics g = Graphics.FromHwnd(hwnd);

//последующие телодвижения для того, что бы скрыть от пользователя процесс рисования.
Bitmap bm = new Bitmap(this.tabloPanel.Width, this.tabloPanel.Height, g);
Graphics g1 = Graphics.FromImage(bm);
g1.Clear(Color.White);
//Тут много разного рисования фигур
...

g.DrawImage(bm, 0, 0);



Дмитрий77Теперь о Frame.
Просто примите как данность, что VB6 и VB.NET - разные языки с похожим синтаксисом и ищите как сделать на Net, а не как использовать прежние подходы.



Дмитрий77К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false)
А он автоматом не устанавливается разве? Или я не понял, что вам надо?

Зачем городить рисование, если делается через свойства?

Вот, например, установка красного цвета фона для пункта меню.
Код: c#
1.
m0ToolStripMenuItem.BackColor = Color.Red;
...
Рейтинг: 0 / 0
20.10.2013, 12:33
    #38434435
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77,

использовать GDI(+) тогда , когда есть Direct2D некузяво
нам даже не нужен WPF для этого.

один раз пишем что то типа
Код: plaintext
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.
//D2C2.cpp
#ifndef BMP_HOLDER_init
typedef struct 
{
  float rot_angel,scale_x,scale_y;
  int loc_x,loc_y;
  int W,H;
  float rot_point_x,rot_point_y;
  float scal_point_x,scal_point_y;
  float Opacity;
  I2D_BMP bmp;
  I2D_RenTarget RT;
  I2D_ImFactory ImFactory;
}BMP_HOLDER;

EXPORT void DrawBitmap(BMP_HOLDER* BMP,int x,int y)
{
	D2D1_MATRIX_3X2_F tr;
	int tr_i=false;
	if (BMP->rot_angel!=0)
	{
		tr=  D2D1::Matrix3x2F::Rotation(BMP->rot_angel,D2D1::Point2(BMP->rot_point_x,BMP->rot_point_y));
		tr_i=true;
	}
	if (BMP->scale_x!=1||BMP->scale_y!=1)
	{
		tr=  D2D1::Matrix3x2F::Rotation(BMP->rot_angel,D2D1::Point2(BMP->rot_point_x,BMP->rot_point_y));
		if (tr_i)
			tr=tr*D2D1::Matrix3x2F::Scale(BMP->scale_x,BMP->scale_y,D2D1::Point2(BMP->scal_point_x,BMP->scal_point_y));
		else
			tr=D2D1::Matrix3x2F::Scale(BMP->scale_x,BMP->scale_y,D2D1::Point2(BMP->scal_point_x,BMP->scal_point_y));
		tr_i=true;
	}
	int x5=BMP->bmp->GetSize().height;
	if (tr_i)	BMP->RT->SetTransform(tr);
	
	BMP->RT->DrawBitmap(
		BMP->bmp,
		D2D1::RectF(BMP->loc_x,BMP->loc_y,BMP->loc_x+BMP->bmp->GetSize().width,BMP->loc_y+BMP->bmp->GetSize().height),
		BMP->Opacity,
		D2D1_BITMAP_INTERPOLATION_MODE_LINEAR);
	
	BMP->RT->SetTransform(TRANSF_ZERO);
	//	tr=  D2D1::Matrix3x2F::Rotation(0,D2D1::Point2(0,0));
}



а теперь просто используем.
Код: c#
1.
2.
3.
4.
public static extern void DrawBitmap(int pbmp,int x,int y);
[DllImport(@"D:\PRJ\_2012_2\D2C2.dll")]
......
DrawBitmap(B2.BMP, 300, 300);

...
Рейтинг: 0 / 0
20.10.2013, 12:35
    #38434436
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
никаких бекбуферов и великолепная скорость.
одни только плюсы.
...
Рейтинг: 0 / 0
20.10.2013, 15:01
    #38434529
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Cat2Дмитрий772) Могу рисовать поверх PictureBox используя понятие hdc .
У него даже понятие handle (HWND) отсутствует.

Вы принципиально не читаете мануалы?

Код: c#
1.
IntPtr hwnd = this.pictureBox1.Handle;



Да теперь вижу что handle (HWND) есть
Почму-то вчера набрал Picturebox1. и не увидел .handle Оч.удивился... (про-гля-дел!!!)
А что, для того чтоб увидеть .handle тоже надо читать мануалы?
Но контейнером он действительно быть не может, буду в этих случаях использовать Panel.

Cat2Просто примите как данность, что VB6 и VB.NET - разные языки с похожим синтаксисом и ищите как сделать на Net
Именно об этом и идет речь.

Дмитрий77то насколько прочие "интересные" контейнеры скажем
TableLayoutPanel, SplitContainer
отвечают требованиям ПОЛНОЦЕННОСТИ
Похоже все нормально. Они могут быть "родителями" и их можно сабклассить при необходимости.

Cat2Дмитрий77К примеру мне нужно установить "серый" стиль пункта меню на классике (когда он Enabled=false)
А он автоматом не устанавливается разве? Или я не понял, что вам надо?

Зачем городить рисование, если делается через свойства?

Вот, например, установка красного цвета фона для пункта меню.
Код: c#
1.
m0ToolStripMenuItem.BackColor = Color.Red;


Не-а, не понял, здесь смотри:
Как заменить "вдавленный стиль" на "серый" (в меню)
1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП).

2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка).
"Engraved (гравировка)" и "серый" -это не одно и то же.

3) Вот тебе решение этого вопроса с объяснениями (и другого быть не может)
14350180

4) Вот тебе решение того же вопроса на .Net (в моем первом посте):
Дмитрий77По ".Net варианту" приходится городить такой огород:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub menu_EditItem_DrawItem(ByVal sender As Object,
                                     ByVal e As System.Windows.Forms.DrawItemEventArgs)
    Dim item_disabled As Boolean = Not CType(sender, MenuItem).Enabled Then
    'либо e.State And DrawItemState.Disabled = DrawItemState.Disabled

    'только классика
    'здесь устанавливаем "серый стиль" на классике
    If App_ThemesEnabled() = False Then
      If item_disabled Then
        Dim hdc As IntPtr = e.Graphics.GetHdc()
        SetTextColor(hdc,
         System.Drawing.ColorTranslator.ToWin32(System.Drawing.SystemColors.GrayText))
        e.Graphics.ReleaseHdc()
      End If
    End If



5) А вот ОТСЮДА следует вопрос про GDI (которое НЕ ПЛЮС):
Дмитрий77При этом с ф-цией
Код: vbnet
1.
2.
  Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As IntPtr, _
   ByVal crColor As Integer) As Integer.

я не справился.

Т.е. как быть с GDI (которое не плюс)?

Cat2использовать GDI(+) тогда , когда есть Direct2D некузяво
Извини, но я не спрашивал ни про Direct2D, ни про Graphics, которая ==GDI+.
Cat2ищите как сделать на Net
Вот я и ищу "ПО-ЧЕСТНОМУ" как сделать в частности SetTextColor (которая у меня API) на .Net.
Но это GDI, а не GDI+ (которая Grapics -Net обертка над GDI+).
Т.е. по сути вопрос
Есть ли в .Net "родная" обертка над GDI?
...
Рейтинг: 0 / 0
20.10.2013, 15:48
    #38434561
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77 Есть ли в .Net "родная" обертка над GDI?
весь .net является обёрткой над разнообразными API

пиши c++ и ни в чём себе не отказывай
...
Рейтинг: 0 / 0
20.10.2013, 17:36
    #38434653
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77Не-а, не понял, здесь смотри:
Как заменить "вдавленный стиль" на "серый" (в меню)
1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП).

2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка).
"Engraved (гравировка)" и "серый" -это не одно и то же.

Это принципиально важно?
...
Рейтинг: 0 / 0
20.10.2013, 17:38
    #38434654
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77Cat2использовать GDI(+) тогда , когда есть Direct2D некузяво
Извини, но я не спрашивал ни про Direct2D, ни про Graphics, которая ==GDI+.

Я этого не писал. Вы вручную сделали эту "мою" цитату.
...
Рейтинг: 0 / 0
20.10.2013, 17:43
    #38434658
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77Вот я и ищу "ПО-ЧЕСТНОМУ" как сделать в частности SetTextColor (которая у меня API) на .Net.
Но это GDI, а не GDI+ (которая Grapics -Net обертка над GDI+).
Т.е. по сути вопрос
Есть ли в .Net "родная" обертка над GDI?
Я не понимаю Вашего желания непременно отрисовывать контролы через GDI. Есть стандартные свойства. Их можно просто изменить или, при нужде, перехватит в событии onPaint и изменить по условию.
...
Рейтинг: 0 / 0
20.10.2013, 18:27
    #38434689
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Cat2Я не понимаю Вашего желания непременно отрисовывать контролы через GDI. Есть стандартные свойства. Их можно просто изменить или, при нужде, перехватит в событии onPaint и изменить по условию.

ну он хочет приключений. вольному воля.

в отрисовке сконтролов средствами GDI , а ищё лучше Direct2D есть свой плюс.
в частности можно сделать DataGridView , который будет работать на несколько порядков быстрее стандартного, не зависимо от количества строк.
...
Рейтинг: 0 / 0
20.10.2013, 18:33
    #38434693
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
beg-in-er,

тормознутость грида связана с GDI не в первую очередь
...
Рейтинг: 0 / 0
20.10.2013, 18:39
    #38434698
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Изопропилbeg-in-er,

тормознутость грида связана с GDI не в первую очередь
це правда.
но всё же как то надо его отображать.
либо через создание контролов, либо просто рисовать ячейки.
а если рисовать , то выбор один из двух гди и директ2д ( для ценителей есть ещё ДиректХ)
...
Рейтинг: 0 / 0
20.10.2013, 19:06
    #38434719
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
beg-in-er,
ох уж это стон опять раздается о тормознутости грида.
да не тормознутый он, просто готовить надо,~~~ 60 -70 перерисовк в секунду - держит, ну кому это надо, эстонцам и раз в минуту сгодится..
...
Рейтинг: 0 / 0
20.10.2013, 19:23
    #38434726
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
beg-in-erдирект2д ( для ценителей есть ещё ДиректХ)
ну тогда уж корректно назовём всё Direct3D
...
Рейтинг: 0 / 0
20.10.2013, 19:58
    #38434756
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Изопропилвесь .net является обёрткой над разнообразными API
Вот я и спрашиваю: что в .Net есть обертка над GDI?
Ну или скажите честно что конкретно ЭТО в .Net нереализовано.

Cat2Дмитрий77Не-а, не понял, здесь смотри:
Как заменить "вдавленный стиль" на "серый" (в меню)
1) Речь не идет о "Strip", речь идет о нормальном меню (в .Net соответствует контролам MainMenu и ContextMenu -которые без слова СТРИП).

2) (Автоматом устанавливается только при включенных XP/Виста теме) Нет, автоматом НА КЛАССИЧЕСКОМ СТИЛЕ СИСТЕМЫ не устанавливается. Автоматом устанавливается Engraved (гравировка).
"Engraved (гравировка)" и "серый" -это не одно и то же.

Это принципиально важно?

А скажи, зачем мне делать ХУЖЕ чем уже сделано (через API)?
Только затем что .NET этого сам не умеет?

Не умеет, так и скажи. Я спрашивал: умеет ли .NET конкретно ЭТО с применением ЭТОГО механизма? Я не спрашивал что он ЕЩЕ УМЕЕТ.

Мне не влом сделать это через API (тем более уже сделал).
...
Рейтинг: 0 / 0
20.10.2013, 20:18
    #38434762
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77Не умеет, так и скажи. Я спрашивал: умеет ли .NET конкретно ЭТО с применением ЭТОГО механизма? Я не спрашивал что он ЕЩЕ УМЕЕТ.

Мне не влом сделать это через API (тем более уже сделал).

У тебя что ни тема, то "разоблачние" .Net. Может, ну его нафиг? На API ж все сделал
...
Рейтинг: 0 / 0
20.10.2013, 21:06
    #38434778
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77Вот я и спрашиваю: что в .Net есть обертка над GDI?
Ну или скажите честно что конкретно ЭТО в .Net нереализовано.
Не знаю, что вы имеtте ввиду. GDI в Nет есть. И уж точно множество функций в НЕТ не меньше, чем в VB6.
Если Вы не можете организовать его вызовы - то это проблемы у Вас, а не у языка.



Дмитрий77А скажи, зачем мне делать ХУЖЕ чем уже сделано (через API)?
Только затем что .NET этого сам не умеет?
Он умеет все, что умеет API.

Не Вы ли в статовом топике писали, что у контролов нет hwnd?

Уверяю, если Вы, наконец, почитаете мануалы, то сможете писать внешне хорошие программы.

Насчет того, что Вы можете писать просто хорошие программы я сильно сомневаюсь. Яйца танцору мешают.
...
Рейтинг: 0 / 0
20.10.2013, 21:39
    #38434802
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Cat2Не Вы ли в статовом топике писали, что у контролов нет hwnd?.
Как смешно. А знаешь, я наверно был морально готов что у самопальных .Net контролов м.б. его и нет.
Но я однако поправился:
Дмитрий77Cat2пропущено...

Вы принципиально не читаете мануалы?

Код: c#
1.
IntPtr hwnd = this.pictureBox1.Handle;



Да теперь вижу что handle (HWND) есть
Почму-то вчера набрал Picturebox1. и не увидел .handle Оч.удивился... (про-гля-дел!!!)

Дмитрий77И уж точно множество функций в НЕТ не меньше, чем в VB6.
А вот с этим я как раз не спорю. Иначе б не было смысла в него влезать.

Дмитрий77GDI в Nет есть. Если Вы не можете организовать его вызовы - то это проблемы у Вас, а не у языка..


А ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc
установить SetTextColor.
Код: vbnet
1.
2.
3.
4.
        Dim hdc As IntPtr = e.Graphics.GetHdc()
        'А вот здесь напиши код без использования API!!!
        SetTextColor(hdc, System.Drawing.ColorTranslator.ToWin32(System.Drawing.SystemColors.GrayText))
        e.Graphics.ReleaseHdc()


А вот потом будешь рассуждать про яйца и про мои способности.
...
Рейтинг: 0 / 0
20.10.2013, 23:21
    #38434867
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77А ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc
установить SetTextColor.Graphics.DrawString?
...
Рейтинг: 0 / 0
20.10.2013, 23:22
    #38434868
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
P.S.: топег не читал. Уж больно много Вы, коллега, буков пишете.
...
Рейтинг: 0 / 0
20.10.2013, 23:32
    #38434876
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Дмитрий77,
авторА ну раз так, то скажи мне как в .Net при полученном (средствами .Net) hdc
установить SetTextColor.
Не могу понять, а зачем поменять цвет текста, нужна такая практология? любой контрол содержит это свойство?
если рисовать чтонить проблем нет как сказал skyANA ? можно и с градиентом...
оооо, о гадиенте... айн момент..
***
на форме панель
просто по бандитский
Код: c#
1.
 panel1.CreateGraphics().FillEllipse(new LinearGradientBrush(panel1.ClientRectangle, Color.Blue, Color.Yellow, LinearGradientMode.ForwardDiagonal), panel1.ClientRectangle); 


с поюсом конечно плохо, а как исполнить это без плюса?
...
Рейтинг: 0 / 0
20.10.2013, 23:45
    #38434887
beg-in-er
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Где-то в степиоооо, о гадиенте... айн момент..

Код: c#
1.
 panel1.CreateGraphics().FillEllipse(new LinearGradientBrush(panel1.ClientRectangle, Color.Blue, Color.Yellow, LinearGradientMode.ForwardDiagonal), panel1.ClientRectangle); 



градиент в Graphic Net - говно. только 2 цвета.
...
Рейтинг: 0 / 0
20.10.2013, 23:52
    #38434889
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
skyANAGraphics.DrawString?
Это GDI+
А надо GDI:
SetTextColor function
SetTextColor
The SetTextColor function sets the text color for the specified device context to the specified color.

Examples
For an example, see "Setting Fonts for Menu-Item Text Strings" in Using Menus .
Не перерисовать итем меню через GDI+, просто поменять цвет текста (sets the text color for the specified device context to the specified color).
...
Рейтинг: 0 / 0
21.10.2013, 00:04
    #38434897
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
Где-то в степи с поюсом конечно плохо,
Вот-вот, плюс хорошо, но далеко не всегда.
Где-то в степиа как исполнить это без плюса?
Конкретно с градиентами например вот так:
14856102
(под спойлером, но это не .Net)
...
Рейтинг: 0 / 0
21.10.2013, 00:11
    #38434904
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!)
beg-in-er,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 panel1.CreateGraphics().FillEllipse(new LinearGradientBrush(panel1.ClientRectangle, Color.Black, Color.Black, 0, false)
                         {
                             InterpolationColors
                                 = new ColorBlend
                                {
                                    Positions = new[] {0, 1/6f, 2/6f, 3/6f, 4/6f, 5/6f, 1},
                                    Colors =
                                        new[]
                                            {
                                                Color.Red, Color.Orange, Color.Yellow, Color.Green, Color.Blue,
                                                Color.Indigo, Color.Violet
                                            }
                                }
                         }, panel1.ClientRectangle);
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Picturebox, Panel, GroupBox, прочие контейнеры(.Net);Picturebox, Frame (VB6);GDI(не плюс!) / 25 сообщений из 51, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]